sql-server - 使用大小写时的不同计数
问题描述
在 SQL Server 中使用 case when 和 distinct 时,我无法获得正确的不同计数。
我有一列用于计算正确计数的 count(distinct TA_STUDENT_ID)。然后我有 2 个额外的列,我在其中按 TA_LOCATION 进行计数,并且 TA_LOCATION 下每行上的数字的总数需要加起来为 DISTINCT TA_STUDENT_ID 的 COUNT。我需要帮助才能做到这一点。这是我的查询:
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
inside COUNT()
withCASE
表达式:
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];
推荐阅读
- intellij-idea - Intellij - 禁用新行的选项卡
- javascript - 尝试从此 API 中提取数据并填充选择下拉列表时,我做错了什么?
- python - pytho 39中vs代码中的gmpy2安装错误
- react-native - React Native 步骤进度条
- python-3.x - 在 Tornado 中为用 @run_on_executor 装饰的函数设置超时条件的最佳方法是什么?
- spring-boot - Mockito 模拟实体管理器无法正常工作
- html - 引导表宽度填充屏幕 - thymeleaf/springboot
- python - 如何循环来自用户的输入?
- html - 如何使标签可点击
- php - ServerSideRender 属性不传递给后端