我需要确保每个IncidentID
都有2个特定ResponseCodes
(201 AND 204)。如何识别不具有201和204的IncidentID
,如下图所示?
数据集
我想在数据集中识别
所需的结果集
SQL Fiddle对我不起作用,但测试代码如下:
CREATE TABLE DIS (
IncidentID NUMERIC,
ResponseCode NUMERIC,
ResponseCodeDescription varchar(30)
)
INSERT INTO DIS (IncidentID, ResponseCode, ResponseCodeDescription)
VALUES
( '999888', '201', 'OSS'),
( '999888', '204', 'Long Term OSS'),
( '888777', '201', 'OSS'),
( '888777', '204', 'Long Term OSS'),
( '777666', '204', 'Long Term OSS'),
( '555444', '201', 'OSS'),
( '555444', '204', 'Long Term OSS')
SELECT
IncidentID
, ResponseCode
, ResponseCodeDescription
FROM DIS
谢谢!
答案 0 :(得分:5)
试试这个:
SELECT IncidentID
FROM DIS
WHERE ResponseCode IN (201,204)
GROUP BY IncidentID
HAVING COUNT(DISTINCT ResponseCode) < 2
此查询将选择IncidentID
值等于ResponseCode
或201
的{{1}}值,但不能同时选择。{/ p>
答案 1 :(得分:1)
您可以尝试使用GROUP BY
和HAVING
条款,如下所示:
SELECT IncidentID
FROM yourtable
WHERE ResponseCode IN (201,204)
GROUP by IncidentID
HAVING COUNT(DISTINCT IncidentID) < 2