以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  s ql 语句请教  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=146134)

--  作者:ljh29206
--  发布时间:2020/2/17 11:59:00
--  s ql 语句请教
 A 表       产品编号  ,   预算开始日期, 预算结束日期, 总预算金额

 B表        产品编号,     使用日期  ,   实绩金额



如何得到C表

A. 产品编号  ,   A.预算开始日期, A.预算结束日期, A.总预算金额 , B. 总使用金额 [B表 ( 使用日期 在 开始 及 结束 之间的 实绩金额 汇总)] ,剩余预算金额(A.总预算金额- B.总使用金额)

麻烦老师帮忙

--  作者:有点蓝
--  发布时间:2020/2/17 14:15:00
--  
select *,总预算金额 - 总使用金额 as 剩余预算金额 from (select a.*,(select sum(b.实绩金额) from B表 as b where b.产品编号 = a.产品编号  and b.使用日期 >= a.预算开始日期 and b.使用日期 <= a.预算结束日期) as 总使用金额 from A表 as a) as c
--  作者:ljh29206
--  发布时间:2020/2/17 16:42:00
--  
SE LECT     预算金额,
                          (SE LECT     SUM(金额合计) AS 使用金额
                            FROM          dbo.YW_采购申购入库单 AS b
                            WHERE      (科目代码 = a.科目代码) AND (部门关系 = a.部门关系) AND (入库日期 >= a.预算开始日期) AND (入库日期 <= a.预算结束日期)) AS 使用金额
FROM         dbo.CW_预算管理单明细 AS a




得到的 使用金额 的结果 为 null  不是 0
[此贴子已经被作者于2020/2/17 16:51:54编辑过]

--  作者:有点蓝
--  发布时间:2020/2/17 17:07:00
--  
试试

SE LECT     SUM(isnull(金额合计,0)) AS 使用金额

--  作者:ljh29206
--  发布时间:2020/2/17 17:32:00
--  
 篮版  ,   还是不行   一样为 null  ,

  语句是没有问题的,  有数值的能计算,

但没数据的显示不出来   0 值  。


                          (SE LECT     SUM(金额合计) AS 使用金额
                            FROM          dbo.YW_采购申购入库单 AS b
                            WHERE      (科目代码 = a.科目代码) AND (部门关系 = a.部门关系) AND (入库日期 >= a.预算开始日期) AND (入库日期 <= a.预算结束日期)) AS 使用金额

这段 代码   我试过 变成



                isnull(          (SE LECT     SUM(isnull(金额合计,0)) AS 使用金额
                            FROM          dbo.YW_采购申购入库单 AS b
                            WHERE      (科目代码 = a.科目代码) AND (部门关系 = a.部门关系) AND (入库日期 >= a.预算开始日期) AND (入库日期 <= a.预算结束日期)) AS 使用金额,0)

报错, 请问怎么修改呢

--  作者:有点蓝
--  发布时间:2020/2/17 20:01:00
--  
外层再套一个select

select 列1,列2,...,isnull(使用金额,0) as 使用金额 from (原来的sql) as a