[英]Filter SQL by Aggregate Not in SELECT Statement
您能否根据聚合值过滤 SQL 表,但仍显示聚合语句中不存在的列值?
我的表格只有 3 列:“Composer_Tune”、“_Year”和“_Rank”。
我想使用 SQL 来查找每个年度列表中重复的“Composer_Tune”值,以及重复项目的排名。
由于我按“Composer_Tune”和“Year”分组,我无法用我当前的代码列出“_Rank”。
该图显示了我最初的“查找重复项”查询结果与我想要的结果:
WITH DUPE_DB AS (SELECT * FROM DB.dbo.[NAME] GROUP BY Composer_Tune, _Year HAVING COUNT(*)>1)
SELECT Composer_Tune, _Year, _Rank
FROM DUPE_DB
您需要在 select 列中显式声明 Group By 表达式中使用的列。 如果您使用 transact sql 正确使用 Group By,则可以使用以下文档。
只需将聚合结果集连接到原始单元级表:
WITH DUPE_DB AS (
SELECT Composer_Tune, _Year
FROM DB.dbo.[NAME]
GROUP BY Composer_Tune, _Year
HAVING COUNT(*) > 1
)
SELECT n.Composer_Tune, n._Year, n._Rank
FROM DB.dbo.[NAME] n
INNER JOIN DUPE_DB
ON n.Compuser_Tune = DUPE_DB.Composer_Tune
AND n._Year = DUPE_DB._Year
ORDER n.Composer_Tune, n._Year
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.