我想选择一个不在的列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)
我怀疑你想要应用一个计数限制,然后返回原始表中的所有匹配记录,以及标量函数的输出.一种方法是使用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)