【发布时间】:2017-05-16 07:04:21
【问题描述】:
分贝:SQL Server 2014
我需要每个 STATUS = 'Passive' 两次或多次 ID 的行
表格:
Id | Status |
----|-----------|
1 | unknown |
1 | other |
1 | active |
2 | unknown |
2 | other |
2 | passive |
3 | passive |
3 | active |
3 | passive |
结果:
3 | passive |
3 | passive |
尝试过:
;WITH Z AS
(
SELECT *,
COUNT(*) OVER (PARTITION BY Id) as Cnt
FROM TheTable
)
SELECT ID, Status
FROM Z
WHERE Cnt >= 2
AND Status = 'Passive'
上面的查询似乎有效,我想确保它 100% 正确工作。 有什么意见吗?
我还需要另一个记录集的更多条件。我有一列 Banned 不能是 1 和 BanReason 不能是 value1、value2、value3。我应该把这些放在哪里?
后脚本。如果我需要此 ID 的所有行怎么办?
3 | passive |
3 | active |
3 | passive |
【问题讨论】:
-
对于
ID=3,status='passive'只出现两次。无论status如何,您都选择出现3次的记录。
标签: sql-server select count common-table-expression