sql 中查询分类汇总的问题

有两个表:
tab1:
ID NAME
A1 YANG
A2 ZHANG
A3 WANG
tab2:
ID FL SZ
A1 F1 10
A1 F2 20
A1 F1 20
A2 F2 30
A2 F2 55
A2 F1 40
A3 F1 20
A3 F2 5
想用SQL语句得到如下结果表:
ID NAME SUM(F1) SUM(F2) SUM(F1)+SUM(F2)
A1 YANG 30 20 50
A2 ZHANG 40 85 125
A3 WANG 0 5 5
SQL 语句该怎么写,在Oracle中?
谢谢!

SELECT F1.ID,
F1.NAME,
SUM1 AS "SUM(F1)",
SUM2 AS "SUM(F2)",
SUM1 + SUM2 AS "SUM(F1+F2)"
FROM (SELECT TAB1.ID, NAME, FL, SUM(SZ) AS SUM1
FROM TAB1, TAB2
WHERE TAB1.ID = TAB2.ID
AND FL = 'F1'
GROUP BY TAB1.ID, NAME, FL) F1
INNER JOIN (SELECT TAB1.ID, NAME, FL, SUM(SZ) AS SUM2
FROM TAB1, TAB2
WHERE TAB1.ID = TAB2.ID
AND FL = 'F2'
GROUP BY TAB1.ID, NAME, FL) F2 ON F1.ID = F2.ID
ORDER BY ID
------------------------------------
符合你要的结果,
注:你说明里A3的sum结果不对追问

没有问题,但最后一句应该是ORDER BY F1.ID

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-31
用临时表INSERT #T1
要号做的多。
相似回答