首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

容易sql查询0.0.0.0.0.0

2013-09-06 
简单sql查询0.0.0.0.0.0A 主表B,C两张A的从表。当A表id在B表时,统计B表某字段money的数据。当A表id在C表时,

简单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最强大的地方就是集合的运算。

热点排行