通过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…那么你需要什么…?以表格式提供示例数据和预期输出此函数返回我想要处理的所有人口。现在我想看看我的表中有哪些记录,我该怎么做?