下面是我的SQL Server数据库中的当前记录,我想创建查询或许是一个存储过程,它返回我的计数。如您所见,当前表中每个AId有三条记录。
至少有两次相同的AId(例如1)将IsComplete设置为1.如果1的AId有三个记录,其中两个设置为真(1)那么它应该计数,否则跳过该计数。所以根据我的条件查询应该返回我数3,因为AI 1 1,3和4至少有1个IsComplete设置为true。
ID PId SId Section IsComplete AId
259 260 3 Area 1 - Items ( 1 - 4 ) 1 1
260 260 4 Area 1 - Items ( 5 - 8 ) 1 1
261 260 5 Area 1 - Items ( 9 - 12 ) 0 1
262 260 6 Area 2 - Items ( 1 - 4 ) 1 2
263 260 7 Area 2 - Items ( 5 - 8 ) 0 2
264 260 8 Area 2 - Items ( 9 - 12 ) 0 2
265 260 9 Area 3 - Items ( 1 - 4 ) 1 3
266 260 10 Area 3 - Items ( 5 - 8 ) 1 3
267 260 11 Area 3 - Items ( 9 - 12 ) 0 3
268 260 12 Area 4 - Items ( 1 - 4 ) 1 4
269 260 13 Area 4 - Items ( 5 - 8 ) 1 4
270 260 14 Area 4 - Items ( 9 - 12 ) 0 4
答案 0 :(得分:3)
我认为你的意思是:
;WITH t as (
SELECT *, COUNT(CASE WHEN IsComplete = 1 THEN AID END) OVER (PARTITION BY AID) cnt
FROM yourTable
)
SELECT COUNT(DISTINCT AID) yourCount
FROM t
WHERE cnt >= 2;
SELECT COUNT(DISTINCT AID) yourCount
FROM (
SELECT *, COUNT(CASE WHEN IsComplete = 1 THEN AID END) OVER (PARTITION BY AID) cnt
FROM yourTable) t
WHERE cnt >= 2;