我有一个看起来像的查询:
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添加到组中,我怎么能这样做?
答案 0 :(得分:1)
您需要将其添加到组或聚合。您可以尝试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子句,因为我不确定这与您在问题中提供的数据有何关联