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.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.*, [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表获得公式,取A表的money进行运算
如果D表的公式,字段存储成一个字符串的话,且比较复杂,不好用SQL解析的话,就用存储过程或函数,或最好放取出数据,放到前台来解析。楼主没给数据,无法给出答案。 SELECT a.*, [money] = COALESCE(a.[money], b.[money], a.[money]), d.公式, 是否利用公式=(CASE WHEN COALESCE(a.[money], b.[money]) IS NULL THEN 1 ELSE 0 END) FROM tableA a LEFT JOIN tableB b ON a.id = b.id LEFT JOIN tableC c ON a.id = c.id LEFT JOIN tableD d ON a.id = d.id
如果D表的公式,字段存储成一个字符串的话,且比较复杂,不好用SQL解析的话,就用存储过程或函数,或最好放取出数据,放到前台来解析。楼主没给数据,无法给出答案。 SELECT a.*, [money] = COALESCE(a.[money], b.[money], a.[money]), d.公式, 是否利用公式=(CASE WHEN COALESCE(a.[money], b.[money]) IS NULL THEN 1 ELSE 0 END) FROM tableA a LEFT JOIN tableB b ON a.id = b.id LEFT JOIN tableC c ON a.id = c.id LEFT JOIN tableD d ON a.id = d.id 恩,用这个函数解决了
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.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
FROM tableA a
LEFT JOIN tableB b
ON a.id = b.id
LEFT JOIN tableC c
ON a.id = c.id
SELECT
a.*,
[money] = COALESCE(a.[money], b.[money], a.[money]),
d.公式,
是否利用公式=(CASE WHEN COALESCE(a.[money], b.[money]) IS NULL THEN 1 ELSE 0 END)
FROM tableA a
LEFT JOIN tableB b
ON a.id = b.id
LEFT JOIN tableC c
ON a.id = c.id
LEFT JOIN tableD d
ON a.id = d.id
SELECT
a.*,
[money] = COALESCE(a.[money], b.[money], a.[money]),
d.公式,
是否利用公式=(CASE WHEN COALESCE(a.[money], b.[money]) IS NULL THEN 1 ELSE 0 END)
FROM tableA a
LEFT JOIN tableB b
ON a.id = b.id
LEFT JOIN tableC c
ON a.id = c.id
LEFT JOIN tableD d
ON a.id = d.id
恩,用这个函数解决了