我有一個簡單的查詢:什麼不對我的查詢
SELECT stco, sum(STSD) As "Shipped Dollars"
FROM MSTDW
這是說有什麼不對與選擇列STCO。
然而,這兩個領域存在,這樣的:
SELECT stco
FROM MSTDW
作品,這
SELECT sum(STSD) As "Shipped Dollars"
FROM MSTDW
工作過。
兩者有什麼不對?
感謝
我有一個簡單的查詢:什麼不對我的查詢
SELECT stco, sum(STSD) As "Shipped Dollars"
FROM MSTDW
這是說有什麼不對與選擇列STCO。
然而,這兩個領域存在,這樣的:
SELECT stco
FROM MSTDW
作品,這
SELECT sum(STSD) As "Shipped Dollars"
FROM MSTDW
工作過。
兩者有什麼不對?
感謝
我想你想這個,一組通過,拿到你需要組的每個stco
SELECT stco, sum(STSD) As "Shipped Dollars"
FROM MSTDW
group by stco
對於應用聚合函數的總和;無論如何,如果你只是希望所有列的總和(我不認爲你想要的,但我加以防萬一)做
SELECT stco, (select sum(STSD) from MSTDW) As "Shipped Dollars"
FROM MSTDW
group by stco
這將列出每個stco
,並重復所有列的sum
sum()函數要求所有非加和列(stco)需要分組,以便數據庫可以邏輯地組合數據。像這些功能被稱爲聚合(http://en.wikipedia.org/wiki/Aggregate_function)。 – Milner 2012-08-13 15:00:31
@AndrewBarber正在編輯 – 2012-08-13 15:01:12
@ElVieejo明白了。看起來不錯 :) – 2012-08-13 15:02:39
爲了使用聚合函數(例如SUM
),您需要定義分組條件:
SELECT stco, sum(STSD) As "Shipped Dollars"
FROM MSTDW
GROUP BY stco
你的第二個查詢工作不stco
的原因是因爲該組是隱式的(即。無條件總和)在你要求的單一SUM
值。
嘛,stco
不aggregated,所以你必須加入到GROUP BY
SELECT stco, SUM(STSD) AS "Shipped Dollars"
FROM MSTDW
GROUP BY stco
然而,你也可以申請骨料stco
過,像這樣:
SELECT AVG(stco) AS SomeValue, SUM(STSD) AS "Shipped Dollars"
FROM MSTDW
一般而言,所有值都必須可以是聚合的,也可以是分組密鑰部分,這些部分將分隔聚合數據區域。
您是否缺少GROUP BY語句? – sybkar 2012-08-13 14:59:36
爲了更有幫助,請包含您收到的確切錯誤消息。 「這表示選擇列stco有問題,阻止我們知道你被告知的所有事情。 – MatBailie 2012-08-13 15:06:19