我有一个简单的查询:
SELECT stco, sum(STSD) As "Shipped Dollars"
FROM MSTDW
这表示选择列stco有问题。
但是,这两个字段都存在,而且:
SELECT stco
FROM MSTDW
工作,这个
SELECT sum(STSD) As "Shipped Dollars"
FROM MSTDW
也适用。
两者都有什么不妥?
由于
答案 0 :(得分:2)
我认为你希望这个,一组,得到每个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
答案 1 :(得分:2)
要使用聚合函数(例如SUM
),您需要定义分组条件:
SELECT stco, sum(STSD) As "Shipped Dollars"
FROM MSTDW
GROUP BY stco
第二个查询在没有stco
的情况下工作的原因是因为该组在您要求的单个SUM
值中是隐式的(即无条件求和)。
答案 2 :(得分:0)
好吧,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
通常,所有值必须是聚合的,或者在分组键部分中,这将分隔数据的聚合区域。