多个条件查询来计算SQL Server中的记录

时间:2016-07-04 05:25:02

标签: sql sql-server

下面是我的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

1 个答案:

答案 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;