我无法使用的情况下,当和SQL Server不同,当得到正确的重复计数。
我有计数(不同TA_STUDENT_ID),计算正确的计数的列。那么我在我下TA_LOCATION做的TA_LOCATION和总数的计数每行数字2个附加列需要加起来DISTINCT TA_STUDENT_ID的计数。我需要帮助得到它这样做。这里是我的查询:
SELECT
count (distinct TA_STUDENT_ID) as 'count',
COUNT (CASE WHEN (TA_LOCATION = 'CCC') THEN 'CCC' END) AS 'CCC',
COUNT(CASE WHEN (TA_LOCATION = 'SCCDC') THEN 'SCCDC' END) AS 'SCCDC',
[TA_AW_ID]
FROM [S85_TA_ACYR]
group by [TA_AW_ID]
order by [TA_AW_ID]
我想要的结果是,在TA_LOCATION列上每行的总数应该总在我的COUNT DISTINCT TA_STUDENT_ID列匹配的行号码。
使用DISTINCT
里面有COUNT()
表达CASE
:
SELECT COUNT(DISTINCT TA_STUDENT_ID) as 'count',
COUNT(DISTINCT CASE WHEN (TA_LOCATION = 'CCC') THEN TA_STUDENT_ID END) AS 'CCC',
COUNT(DISTINCT CASE WHEN (TA_LOCATION = 'SCCDC') THEN TA_STUDENT_ID END) AS 'SCCDC',
[TA_AW_ID]
FROM [S85_TA_ACYR]
GROUP BY [TA_AW_ID]
ORDER BY [TA_AW_ID];
你也可以使用一个SUM()第二两个领域,就像这样:
SELECT
Count = COUNT(DISTINCT TA_STUDENT_ID)
,CCC = SUM(CASE WHEN ( TA_LOCATION = 'CCC' ) THEN 1 ELSE 0 END)
,SCCDC = SUM(CASE WHEN ( TA_LOCATION = 'SCCDC' ) THEN 1 ELSE 0 END)
,TA_AW_ID
FROM S85_TA_ACYR
GROUP BY TA_AW_ID
ORDER BY TA_AW_ID