TSQL:如何确保一个ID有多行?

JM1*_*JM1 4 t-sql sql-server sql-server-2014

我需要确保每个IncidentID都有2个特定的ResponseCodes(201 AND 204).我如何识别IncidentID不具有201和204的那个,如下图所示?

数据集

在此输入图像描述

我想在数据集中识别的内容

在此输入图像描述

期望的结果集:

在此输入图像描述

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
Run Code Online (Sandbox Code Playgroud)

谢谢!

Gio*_*sos 5

试试这个:

SELECT IncidentID
FROM DIS
WHERE ResponseCode IN (201,204)
GROUP BY IncidentID
HAVING COUNT(DISTINCT ResponseCode) < 2
Run Code Online (Sandbox Code Playgroud)

此查询将选择IncidentIDResponseCode等于201或等于204两者的值.