我正在尝试运行查询:
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 :(得分: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都没有。