2013-05-28 19 views
-1

我試圖運行查詢聯接和集團不同:選擇與

Select Distinct table2.columnA columnA_0 , 
     table3.columnB columnB_1 , 
     table2.columnC columnC_2 
    From table4 Join table1 on table4.columnD = table1.columnD 
      Left Outer Join table2 on table2.columnD = table1.columnD 
      Left Outer Join table3 on table3.columnE = table2.columnE 
      where table2.columnA IS NOT NULL 
      group by dbo.table2.columnA 

但我收到錯誤

Column 'table3.columnB' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause 

誰能告訴我爲什麼?

+0

爲什麼你使用'distinct'和'group by'?如果選擇列表中的所有列不在聚合函數中,則SQL Server會要求所有列位於一個組中。刪除組。 – Taryn

+1

如果您不使用聚合,羣組的意圖是什麼? – bummi

回答

2

的,這是爲什麼在你的查詢(table2.columnA columnA_0, table3.columnB columnB_1, table2.columnC columnC_2)的選擇部分的所有列必須列入GROUP BY條款,像SUM,MIN,MAX聚合函數使用等

+0

呵呵。感謝那一個。壞的腦屁。 – rjbogz

1

這可能是因爲您明確將其分組爲table2.columnA,但select子句中的某些值既不被聚合也不被分組。由於您需要不同的值(基於您包含的不同關鍵字),只需刪除group by子句即可。

如果您以前使用過MySQL,這可能對您而言是新的--MySQL允許在分組查詢的select子句中包含未聚合的未分組列;大多數其他RDBMS不會。

+0

是的,我用過mysql,但現在必須使用sql server。到目前爲止,我發現有幾件事情令人感到煩惱。感謝您的答覆。 :-) – rjbogz