0

我有一个简单的查询:

SELECT stco, sum(STSD) As "Shipped Dollars"
FROM MSTDW 

这表示选择列 stco 有问题。

但是,这两个字段都存在,并且:

SELECT stco
FROM MSTDW 

工作,这

SELECT sum(STSD) As "Shipped Dollars"
FROM MSTDW 

也可以。

两者兼有有什么问题?

谢谢

4

3 回答 3

2

我想你想要这个,一组,得到每个的总和stco

SELECT stco, sum(STSD) As "Shipped Dollars"
FROM MSTDW 
group by stco

对于应用聚合函数,您需要分组;无论如何,如果你只想要 ALL 列的总和(我不认为你想要那个,但我添加它以防万一)做

SELECT stco, (select sum(STSD) from MSTDW) As "Shipped Dollars"
    FROM MSTDW 
    group by stco

这将列出每个stco,并重复sum所有列

于 2012-08-13T14:59:07.163 回答
2

为了使用聚合函数(例如SUM),您需要定义分组条件:

SELECT stco, sum(STSD) As "Shipped Dollars"
FROM MSTDW 
GROUP BY stco

您的第二个查询没有工作的原因是因为该组在您要求stco的单个值中是隐式的(即无条件总和) 。SUM

于 2012-08-13T14:59:21.043 回答
0

嗯,stco不是聚合的,所以你必须添加到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 

通常,所有值都必须聚合或位于分组键部分中,这将分隔数据的聚合区域。

于 2012-08-13T15:05:40.700 回答