Sqlserver 如何根据自定义逻辑分组
有如下表结构:
SELECT * FROM dbo.TB_StudentScore
ORDER BY Score DESC

自定义分组逻辑查询:
SELECT
(
CASE
WHEN Score>=90 THEN '优秀'
WHEN Score>=60 or Score>=90 THEN '中等及以上'
WHEN Score<60 THEN '差'
END
) AS LevelInfo,
COUNT(1) AS LevelCount
FROM dbo.TB_StudentScore
GROUP BY
(
CASE
WHEN Score>=90 THEN '优秀'
WHEN Score>=60 or Score>=90 THEN '中等及以上'
WHEN Score<60 THEN '差'
END
)
查询结果:

这不是我想要的结果,我想要的是中等及以上包含优秀的那3个,Sqlserver group by之后 数据在A组,就不会在B组出现,
我的诉求是,数据既然属于A组的逻辑,也属于B组的逻辑,就想全部统计到。怎么实现呢?
当然通过union all 可以实现,但代码冗余且复杂。有什么方法能很优雅的,代码简洁的实现如上功能呢?求解答 谢谢。
...全文
相关推荐
mssql-queries:SQL查询存储库
mssql查询 SQL查询存储库
sql server的表分组工具
运用这个sqlserver的表分组工具,可以将众多的表归类分组,使所有的表分部结构清晰化。
SQLServer2005函数大全
SQLServer2005函数大全,SQLServer2005函数大全,SQLServer2005函数大全
sqlserver个人学习笔记
sqlserver个人学习笔记
SQLserver 实现分组统计查询(按月、小时分组)
设置AccessCount字段可以根据需求在特定的时间范围内如果是相同IP访问就在AccessCount上累加。 代码如下:Create table Counter ( CounterID int identity(1,1) not null, IP varchar(20), AccessDateTime datetime, AccessCount int ) 该表在这儿只是演示使用,所以只提供了最基本的字段 现在往表中插入几条记录 insert into Counter select ‘127.0.0.1’,getdate(),1 union all select ‘127.0.0.2’,


