选择distinct with join和group by

时间:2013-05-28 16:52:28

标签: sql-server select group-by

我正在尝试运行查询:

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

谁能告诉我为什么?

2 个答案:

答案 0 :(得分:2)

原因是查询的选择部分中的所有列(table2.columnA columnA_0, table3.columnB columnB_1, table2.columnC columnC_2)必须包含在GROUP BY子句中, OR 用于聚合函数,例如SUM,MIN,MAX等

答案 1 :(得分:1)

这是因为您明确按table2.columnA分组,但select子句中的某些值既不是聚合也不是分组。由于您需要不同的值(基于您包含distinct关键字),只需删除group by子句。

如果您以前使用过MySQL,这对您来说可能是新手--MySQL允许在分组查询的select子句中包含未聚合的,未分组的列;大多数其他RDBMS都没有。