请试试这个 -- 我已经为你生成了两个解决方案。
CREATE TABLE notify
(
ID INT
,NotificationID INT
,[DateTime] DATETIME
)
GO
INSERT INTO notify VALUES
(1,55555,'2018-01-29 23:00:36.983'),
(2,55555,'2018-01-25 18:38:09.513'),
(3,55555,'2018-01-25 18:38:09.513'),
(4,55555,'2018-01-25 18:38:09.513')
INSERT INTO notify VALUES
(6,11111,GETDATE()),
(7,11111,GETDATE())
输出 1
SELECT Id,NotificationID,[DateTime],CASE WHEN a <> b THEN 'False' else 'True' End co FROM
(
SELECT * , COUNT(*) OVER (PARTITION BY NotificationID) a , COUNT(*) OVER (PARTITION BY NotificationID,[DateTime]) b
FROM notify
)k
Id NotificationID DateTime co
----------- -------------- ----------------------- -----
6 11111 2018-01-30 18:44:18.170 True
7 11111 2018-01-30 18:44:18.170 True
2 55555 2018-01-25 18:38:09.513 False
3 55555 2018-01-25 18:38:09.513 False
4 55555 2018-01-25 18:38:09.513 False
1 55555 2018-01-29 23:00:36.983 False
(6 rows affected)
输出 2
SELECT NotificationID,MAX(CASE WHEN a <> b THEN 'False' else 'True' End) co
FROM
(
SELECT * , COUNT(*) OVER (PARTITION BY NotificationID) a , COUNT(*) OVER (PARTITION BY NotificationID,[DateTime]) b
FROM notify
)k GROUP BY NotificationID
NotificationID co
-------------- -----
11111 True
55555 False
(2 rows affected)