通过SQL Server选择组中没有的列
我想选择一个不在通过SQL Server选择组中没有的列,sql,sql-server,Sql,Sql Server,我想选择一个不在分组依据中的列 我的代码: SELECT dbo.func(field1, field2), field3 FROM table WHERE field4 = 1224 GROUP BY dbo.func(field1, field2), field3 HAVING COUNT(id) > 1 我还想选择列id,如下所示: SELECT id, dbo.func(field1, field2),
分组依据中的列
我的代码:
SELECT
dbo.func(field1, field2), field3
FROM
table
WHERE
field4 = 1224
GROUP BY
dbo.func(field1, field2), field3
HAVING
COUNT(id) > 1
我还想选择列id
,如下所示:
SELECT
id, dbo.func(field1, field2), field3
FROM
table
WHERE
field4 = 1224
GROUP BY
dbo.func(field1, field2), field3
HAVING
COUNT(id) > 1
我怀疑您希望应用计数限制,然后返回原始表中所有匹配的记录以及标量函数的输出。一种方法是使用COUNT
作为分析函数,其分区对应于原始groupby
子句中出现的列。这里的区别在于,我们实际上并没有聚合原始表
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;
我怀疑您希望应用计数限制,然后返回原始表中所有匹配的记录以及标量函数的输出。一种方法是使用COUNT
作为分析函数,其分区对应于原始groupby
子句中出现的列。这里的区别在于,我们实际上并没有聚合原始表
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;
您可以连接回原始表以检索id为的匹配行:
您可以连接回原始表以检索id为的匹配行:
看起来这是一个标量UDF…那么你需要什么…?提供示例数据和表格式的预期输出此函数返回我想要处理的所有人口。现在我想看看我的表中有哪些记录,我该怎么做?看起来这是一个标量UDF…那么你需要什么…?以表格式提供示例数据和预期输出此函数返回我想要处理的所有人口。现在我想看看我的表中有哪些记录,我该怎么做?