Microsoft SQL Server 2019中实现Kind列重复值仅单次显示的查询方案
需求实现方案
这个需求完全可行,在SQL Server 2019中可以通过窗口函数快速实现,以下是具体的两种实现方法:
方法一:使用ROW_NUMBER()窗口函数
通过分组编号判断是否为组内第一行,仅第一行显示Kind值:
SELECT CASE WHEN ROW_NUMBER() OVER(PARTITION BY kind ORDER BY numberOfProperties) = 1 THEN kind ELSE '' END AS kind, properties, type, numberOfProperties FROM Colors ORDER BY kind, numberOfProperties
说明:PARTITION BY kind将数据按Kind分组,ROW_NUMBER()为每组内的行按numberOfProperties排序后编号,编号为1时显示原Kind值,其余行显示空字符串。
方法二:使用LAG()窗口函数
通过对比当前行与上一行的Kind值,仅在Kind值变化时显示:
SELECT CASE WHEN LAG(kind) OVER(ORDER BY kind, numberOfProperties) = kind THEN '' ELSE kind END AS kind, properties, type, numberOfProperties FROM Colors ORDER BY kind, numberOfProperties
说明:LAG(kind)获取当前行的上一行Kind值,若与当前行相同则显示空,否则显示当前Kind值,排序规则保证分组内的顺序正确。
导出到Excel的方法
在SQL Server Management Studio(SSMS)中操作:
- 执行完上述查询后,右键点击结果集,选择「保存结果为」,选择Excel格式(.xlsx/.xls)保存即可。
- 或者使用「导出数据」向导:依次选择数据源为SQL Server、目标为Excel,按照向导步骤完成数据导出。
内容的提问来源于stack exchange,提问作者Gerrell Bones
相关产品推荐
相关产品推荐

