每年不同的计数

时间:2015-03-17 20:38:49

标签: sql-server

你好,即使一个人在同一年有两次入学,我也只想算一个人:

    select  DISTINCT Year, School,
    count (case when [Graduate]= 1 AND [Dropout]= 0 THEN ID END) As  'passed',
    count (case when [Graduate]= 0 AND [Dropout]= 1 THEN ID END) as 'dropped',
     count (case when [Graduate]= 0 AND [Dropout]= 0 THEN ID END) as 'Continued'
    from Table where ID = '10'
    group by Year, School

my output is    
Year    school  passed   dropped   continued
2012    School    0         0          1
2013    School    0         0          1
2014    School    0         0          2
由于学生注册了两次,

续ID为2 = 2。在这种情况下,我如何得到明确的计数?

1 个答案:

答案 0 :(得分:1)

您使用的是DISTINCT错误,它应位于每个COUNT内:

SELECT  [Year], 
        School,
        COUNT(DISTINCT CASE WHEN [Graduate] = 1 AND [Dropout] = 0 THEN ID END) Passed,
        COUNT(DISTINCT CASE WHEN [Graduate] = 0 AND [Dropout] = 1 THEN ID END) Dropped,
        COUNT(DISTINCT CASE WHEN [Graduate] = 0 AND [Dropout] = 0 THEN ID END) Continued
FROM YourTable 
WHERE ID = '10'
GROUP BY [Year], 
         School;