MS SQL 中的非聚合字段
Posted
技术标签:
【中文标题】MS SQL 中的非聚合字段【英文标题】:Non Aggregate fields in MS SQL 【发布时间】:2021-04-12 23:10:43 【问题描述】:我有 MS SQL 服务器表,其中包含如下数据
id val1 val2
1 100.00 50.00
2 25.00 30.00
3 30.00 25.00
4 100.00 50.00
5 40.00 80.00
6 25.00 30.00
7 80.00 21.00
8 25.00 30.00
在上表中,很少有 val1 val2 值组合出现超过一个,即 100.00 50.00 出现两次,25.00 30.00 出现三次。同样,如果任何组合出现多个,我将需要获取这些 ID。 所以我的结果是 id - 1,2,4,6,8。 请帮助如何在 MS SQL 中查询。谢谢
【问题讨论】:
id字段不在聚合函数或group by子句中报错 【参考方案1】:CTE
获得不止一次出现的val1, val2
对。我们加入表格以获取id
值:
;with cte as (
select val1, val2
from t
group by val1, val2
having count(*) > 1
)
select id
from t
join cte on t.val1 = cte.val1 and t.val2 = cte.val2
【讨论】:
以上是关于MS SQL 中的非聚合字段的主要内容,如果未能解决你的问题,请参考以下文章