积极答复者
SQL能否运用 if,switch 等条件语句呢?

问题
-
表1 :
项目(nvarchar),批次(nvarchar),数量(int),金额(int)
内容:
项目 批次 数量 金额
A 001 1 10
A 002 2 40
B 003 3 20
-------------------------------------------------------------
希望得到的结果
项目 批次 数量合计 金额合计
A - 3 50
B 003 3 20
-----------------------------------------------------------
看似很简单的例子, 用GROUP BY 和SUM()就可以搞定合并和合计.
但是批次的显示必须遵循以下规则:
如果同时存在2个或以上相同项目,那么合并的批次用"-"代替.否则就直接显示该项目的批次.
不知条件语句该如何编写?
答案
-
你好
SQL 能用IF STATEMENT 的
IF 1=2
BEGIN
--TRUE ACTION
END
ELSE
BEING
END
或
SELECT Col1, CASE WHEN COUNT(*) >1 THEN '--' ELSE 'something' END AS ColumnC
FROM TABLE1
大概是這樣的, 在你的情況中應該
是
SELECT 项目 , CASE WHEN COUNT(批次)>1 THEN '---' ELSE MAX(批次) END AS 批次, SUM(数量 ) AS 数量合计, SUM(金额 ) AS 金额合计
FROM TABLE1
GROUP BY 项目
Please correct me if my concept is wrong
Chi- 已标记为答案 vboykk 2010年11月17日 9:21
全部回复
-
你好
SQL 能用IF STATEMENT 的
IF 1=2
BEGIN
--TRUE ACTION
END
ELSE
BEING
END
或
SELECT Col1, CASE WHEN COUNT(*) >1 THEN '--' ELSE 'something' END AS ColumnC
FROM TABLE1
大概是這樣的, 在你的情況中應該
是
SELECT 项目 , CASE WHEN COUNT(批次)>1 THEN '---' ELSE MAX(批次) END AS 批次, SUM(数量 ) AS 数量合计, SUM(金额 ) AS 金额合计
FROM TABLE1
GROUP BY 项目
Please correct me if my concept is wrong
Chi- 已标记为答案 vboykk 2010年11月17日 9:21
-
实在太感谢兄弟的回复了,根据你的提示终于也写成功了!
----------------------------------------------------------------------------------
SELECT 项目
,CASE WHEN COUNT(项目) >1
THEN '--'
ELSE (SELECT 批次 FROM 表1 WHERE 项目= ListA.项目 ) END AS 批次
,数量合计=SUM(数量合计)
,金额合计=SUM(金额合计)
FROM 表1 ListA
GROUP BY 项目
----------------------------------------------------------------------------------
不知有没有效率问题?另外TEMP TABLE 是什么模式啊?建个临时表?