
如图所示,我想查询出 所有同时拥有001, 001001, 001002值的OrgGUID,
上图的结果应该是:
032A55BB-9260-42F1-930B-3B5C98C7EE85,
085f9a91-e8f0-4606-8dcf-a6957aeb84be,
0A7BBEDF-04D6-473C-B655-1761CECC1155,
0A90E198-5466-4AA2-9A7B-3C82CBA28AD5,
0D31C8FA-0F22-41C3-9E04-353B2B6C8AD4
------解决思路----------------------
WITH a AS (
SELECT orgguid,
SUM(CASE WHEN CodeFunction = '001' THEN 1 ELSE 0) AS sum_001,
SUM(CASE WHEN CodeFunction = '001001' THEN 1 ELSE 0) AS
sum_001001,
SUM(CASE WHEN CodeFunction = '001002' THEN 1 ELSE 0) AS
sum_001002
FROM tbl
GROUP BY
OrgGuid
)
SELECT orgguid
FROM a
WHERE sum_001 > 0
AND SUM_001001 > 0
AND SUM_001002 > 0
------解决思路----------------------
SELECT orgguid
FROM tbl
GROUP BY OrgGuid
HAVING
SUM(CASE WHEN CodeFunction = '001' THEN 1 ELSE 0 END)>0 AND
SUM(CASE WHEN CodeFunction = '001001' THEN 1 ELSE 0 END)>0 AND
SUM(CASE WHEN CodeFunction = '001002' THEN 1 ELSE 0 END)>0