日期:2014-05-17  浏览次数:20512 次

简单sql查询0.0.0.0.0.0
A 主表
B,C  两张A的从表。

当A表id在B表时,统计B表某字段money的数据。
当A表id在C表时,统计C表某字段money的数据。

想到case when但是总是返回常量,求解答。。。
sql

------解决方案--------------------

SELECT a.id,SUM(ISNULL(b.money,c.money) money
FROM a
LEFT JOIN b ON a.id=b.id
LEFT JOIN c ON a.id=c.id
GROUP BY a.id

------解决方案--------------------

select A.ID,B.amt as B金额,C.amt as C金额
from A
left join (select Aid ,SUM(amt) as amt from B group by Aid) B on A.id=B.Aid
left join (select Aid ,SUM(amt) as amt from C group by Aid) C on A.id=C.Aid

------解决方案--------------------
SELECT a.*, [money] = COALESCE(a.[money], b.[money], 0)	--COALESCE函数中可以加任意多的参数,它返回第一个不为NULL的参数值
FROM tableA a
LEFT JOIN tableB b
ON a.id = b.id
LEFT JOIN tableC c
ON a.id = c.id

------解决方案--------------------
涉及到从D表取公式算这种,只能在程序中去完成,这是SQL没办法做的。SQL最强大的地方就是集合的运算。