SQL Server(SSMS)中按电台与年份统计曲目名称和主艺人唯一组合数的实现方案
解决SQL Server中按电台年份统计曲目-艺人唯一组合数的问题
我来帮你调整SQL语句,直接得到你想要的结果,不用再依赖Excel透视啦。
首先得明确你的核心需求:统计每个电台每年里,「曲目名称+主艺人」这个组合的唯一数量。你之前的SQL问题出在分组维度不对——把Main Artist也加入了GROUP BY,导致结果是按艺人拆分的,而不是按电台+年份整体汇总。
下面分两种情况给你解决方案:
情况1:使用SQL Server 2017及更高版本
从2017版本开始,SQL Server支持在COUNT(DISTINCT)里直接指定多个列,这样可以精准统计两个字段的唯一组合数:
SELECT COUNT(DISTINCT [Track Title], [Main Artist]) AS Count, [Station], [Year] FROM your_table_name -- 替换成你的实际表名 GROUP BY [Station], [Year] ORDER BY [Station], [Year] DESC;
情况2:使用SQL Server 2016及更早版本
如果你的版本不支持多列COUNT(DISTINCT),可以用拼接字段的方式生成唯一标识(注意选一个不会出现在曲目或艺人名称里的分隔符,比如|,避免拼接后出现重复):
SELECT COUNT(DISTINCT CONCAT([Track Title], '|', [Main Artist])) AS Count, [Station], [Year] FROM your_table_name -- 替换成你的实际表名 GROUP BY [Station], [Year] ORDER BY [Station], [Year] DESC;
这两个语句都会直接输出你期望的格式:按电台和年份分组,显示对应的唯一组合数量,完全不需要后续Excel处理。
内容的提问来源于stack exchange,提问作者Emil Visti
相关产品推荐
相关产品推荐

