當比方說,我有以下查詢:SQL:默認行爲使用GROUP BY
SELECT colA, colB, colC, colD
FROM table
GROUP BY colC, colD
此查詢不上MS SQL Server
運行,因爲列colA
和colB
不是GROUP BY的一部分,也不總計。
現在,我知道所有其他列將在每個組內具有相同的值。所以我可以通過爲colA
和colB
選擇一個像MAX
這樣的集合來解決這個問題,或者只需將它們添加到GROUP BY
即可。
但是,這是我的問題:上面的查詢只是一個例子,但我真正有幾個非常長的查詢有很多列。我想知道的是:我可以爲其餘列設置默認聚合函數或類似的東西,所以我不需要必須在GROUP BY
中手動包括所有剩餘的列,或手動將聚合應用於所有選定的塊?
答案是否定的!一般的GROUP BY規則說:「如果指定了GROUP BY子句,SELECT列表中的每個列引用必須標識一個分組列或作爲set函數的參數。」 – jarlh
這裏有一個很好的考慮因素:如果你已經在你的SELECT列表中指定了ColA,ColB,... ColN,它將很快複製粘貼到GROUP BY子句中:)看起來你不需要需要一個複雜的解決方案。 –
假設您有一輛沒有輪胎的汽車,您想添加所有輪胎。你可以添加一個,並期望汽車去做其餘的? – CiucaS