通过SQL Server选择组中没有的列

Aya*_*yal 0 sql sql-server

我想选择一个不在的列GROUP BY.

我的代码:

 SELECT 
     dbo.func(field1, field2), field3
 FROM
     table
 WHERE
     field4 = 1224
 GROUP BY
     dbo.func(field1, field2), field3
 HAVING
     COUNT(id) > 1
Run Code Online (Sandbox Code Playgroud)

我想也选择这样的列id:

 SELECT 
     id, dbo.func(field1, field2), field3
 FROM
     table
 WHERE
     field4 = 1224
 GROUP BY
     dbo.func(field1, field2), field3
 HAVING
     COUNT(id) > 1
Run Code Online (Sandbox Code Playgroud)

Tim*_*sen 5

我怀疑你想要应用一个计数限制,然后返回原始表中的所有匹配记录,以及标量函数的输出.一种方法是使用COUNT分区函数作为分析函数,该分区对应于原始GROUP BY子句中出现的列.这里的不同之处在于我们实际上并没有聚合原始表.

WITH cte AS (
    SELECT id, dbo.func(field1, field2) AS out, field3,
        COUNT(id) OVER (PARTITION BY dbo.func(field1, field2), field3) cnt
    FROM yourTable
    WHERE field4 = 1224
)

SELECT id, out, field3
FROM cte
WHERE cnt > 1;
Run Code Online (Sandbox Code Playgroud)