【问题标题】:Non Aggregate fields in MS SQLMS 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子句中报错

标签: sql-server aggregate-functions window-functions


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 2022-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多