-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

谁能告诉我为什么?

4

2 回答 2

2

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

于 2013-05-28T16:58:22.757 回答
1

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

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

于 2013-05-28T16:57:25.690 回答