请教一个SQL语句

想问下下面这个语句是啥意思啊?

SELECT 部门, 制单人, 日期, 业务员, SUM(CASE 明细分类 WHEN '紫大地' THEN 本币价税合计 ELSE NULL END) AS [紫大地], FROM salesdt GROUP BY 部门, 制单人, 日期, 业务员
太感谢你的回答了,不过我还有2点不是很懂。 1、CASE,WHEN,THEN是在“明细分类”列中找到“紫大地”作为“本币价税合计” 中 “紫大地”作为“本币价税合计” 是什么意思?
2、select 部门, 制单人, 日期, 业务员 有四个 那这个语句到底是按照哪个来分组的呢?还是同时分组?

查询结果就是在“紫大地”的不同部门的“本币价税合计”的总和

SELECT就是查询
SUM是计算一列的数值的总和
CASE,WHEN,THEN是在“明细分类”列中找到“紫大地”作为“本币价税合计”
AS就是把SUM计算的和放到结果中的“紫大地”列中
FROM salesdt是所查询的表
GROUP BY是分组,也就是按照相同的部门来分组
比如:
Store_Information 表格
store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999
用下面的语句查询上面的表
SELECT store_name, SUM(Sales) FROM Store_Information GROUP BY store_name
得到如下结果
store_name SUM(Sales)
Los Angeles $1800
San Diego $250
Boston $700
==========
补充:
1、在CASE、WHEN、THEN语句之后有个AS,这就是替换一个名称,这样做的目的就是方便看表。
比如这样一个简单的查询:
SELECT COUNT(*) FROM a WHERE b=1
这个SELECT查询的结果是(假设a表中符合b=1的有4条记录)
COUNT(*)
4
这样结果的列名就是COUNT(*)
为了阅读方便,可以用AS,也就是这样:
SELECT COUNT(*) AS amount FROM a WHERE b=1
结果就是这样的了:
amount
4
列名就叫做amount了,这样方便看表。
具体到你的问题就是把"本币价税合计"替换为"紫大地"来作为查询结果的列名来显示,只是为了看表方便、直观。
2、是按照四个来分组。就像esechi所说的例子那样,四个列都一样,算一组,然后把紫大地的数值求和。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-29
原来的表
部门, 制单人, 日期, 业务员,明细分类,本币价税合计
1 a 08/07 a 紫大地 100
1 a 08/08 a 紫大地 200
1 a 08/08 a 紫大地 300
1 a 08/08 a 绿大地 100

选出来记录
部门, 制单人, 日期, 业务员,紫大地
1 a 08/07 a 100
1 a 08/08 a 500
第2个回答  2008-10-29
按照部门、制单人, 日期, 业务员 统计的明细类为[紫大地],的[本币价税合计]
相似回答