0

我有一个看起来像这样的查询:

SELECT col1, col2, col3, col4, COUNT(*) OVER(PARTITION BY PAT07, PAT08, PAT18) AS TotalPerPerson
FROM Table1
GROUP BY col1, col2, col3, col4

它返回一个如下所示的表:

col1   col2   col3   col4   TotalPerPerson
data1  data2  data3  data4  2
data1  data2  data3  data5  2
data10 data11 data12 data13 3
data10 data11 data12 data14 3
data10 data11 data12 data15 3

问题是这个查询在 with 子句中,我无法将它加入到主查询中。我需要在此查询中选择“id”列,以便可以在内部联接中使用它。如果不将 id 添加到 group by,我该如何做到这一点?

4

1 回答 1

1

您需要将其添加到 group by 或聚合中。您可以尝试 min() 或 max() 或者您可以使用子查询来选择前 1 个。在不知道主键与此数据的关系的情况下,很难提出最佳答案。

对于子查询,尝试类似:

 SELECT 
 col1
,col2
,col3
,col4
,COUNT(*) OVER(PARTITION BY PAT07, PAT08, PAT18) AS TotalPerPerson
,(select top 1 id from Table1 where {criteria relating data to id}) as id 
FROM Table1 
GROUP BY 
 col1
,col2
,col3
,col4 

很难建议 where 子句,因为我不确定这与您在问题中提供的数据有何关系

于 2013-06-05T15:52:06.153 回答