两张表:1.应收费用(yingshou)编号 月份 本月应收 当前余额
1001 4 100 0
1001 5 200 0
1002 4 350 -300
1002 5 300 -300
1003 4 250 50
1003 5 650 50
2.已收费用(yishou)编号 月份 本月已收 1001 4 100
1001 5 200
1002 4 350
1003 4 950 (多交的为预交)
我想在一个grid按如下格式查询出某月(如4月)交费情况,和欠费情况,,不知道应该怎么写这条SQL语句?
格式为(按如上所给出的数据):5月份交费情况:编号 本月应收 本月已收 当前余额
1001 200 200 0
1003 650 0 50 (这里是关键,因为1003在yingshou的5月份数据中有记录。而yishou中无5月份的记录,怎样才能对应起来呢)5月份欠费情况:编号 本月应收 本月已收 当前余额
1002 300 Null -300(这里是关键,因为1002在yingshou的5月份数据中有记录。而yishou中无5月份的记录,怎样才能对应起来呢)谢谢各位朋友如能帮我,,100分全给他,绝不食言。并且请各位注意(yingshou)表有而(yishou)中没有的情况,用外连接。。
1001 4 100 0
1001 5 200 0
1002 4 350 -300
1002 5 300 -300
1003 4 250 50
1003 5 650 50
2.已收费用(yishou)编号 月份 本月已收 1001 4 100
1001 5 200
1002 4 350
1003 4 950 (多交的为预交)
我想在一个grid按如下格式查询出某月(如4月)交费情况,和欠费情况,,不知道应该怎么写这条SQL语句?
格式为(按如上所给出的数据):5月份交费情况:编号 本月应收 本月已收 当前余额
1001 200 200 0
1003 650 0 50 (这里是关键,因为1003在yingshou的5月份数据中有记录。而yishou中无5月份的记录,怎样才能对应起来呢)5月份欠费情况:编号 本月应收 本月已收 当前余额
1002 300 Null -300(这里是关键,因为1002在yingshou的5月份数据中有记录。而yishou中无5月份的记录,怎样才能对应起来呢)谢谢各位朋友如能帮我,,100分全给他,绝不食言。并且请各位注意(yingshou)表有而(yishou)中没有的情况,用外连接。。
一部分是 编号 和月份符合 的查询结果
另一部分是 编号相同但月份不相同 or 编号 月份都不符合 的查询结果
如:select SUM(thefield) from XXXX
dbo.yinshou.ItemMonth, dbo.yinshou.Fee,
dbo.yinshou.Remain + dbo.yinshou.Fee - SUM(ISNULL(dbo.yishou.Money, 0))
AS remain
FROM dbo.yinshou LEFT OUTER JOIN
dbo.yishou ON dbo.yinshou.ItemNO = dbo.yishou.ItemNO AND
dbo.yinshou.ItemMonth = dbo.yishou.ItemMonth
GROUP BY dbo.yinshou.ItemNO, dbo.yinshou.ItemMonth, dbo.yinshou.Fee,
dbo.yinshou.Remainitemno:编号 itemmonth:月份 fee: 本月应收 remain: 当前余额
money:本月已收
((select sum(b.本月已收) from yishou b where b.编号=a.编号 and b.月份=a.月份) is null) then 0 else (select sum(b.本月已收) from yishou b where b.编号=a.编号 and b.月份=a.月份) end) , a.当前余额
from yingshou a
where a.当前余额>=02.欠费情况:select a.编号,a.月份 ,a.本月应收,本月已收=(case when
((select sum(b.本月已收) from yishou b where b.编号=a.编号 and b.月份=a.月份) is null) then 0 else (select sum(b.本月已收) from yishou b where b.编号=a.编号 and b.月份=a.月份) end) , a.当前余额
from yingshou a
where a.当前余额<0
R := 'Select * From yingshou where 月份 = 5 '
S := 'Select * From yishou where 月份 = 5 ' K := '(' + R + ') as R Left Join (' + S + ') as S Where R.编号=S.编号'; 余额本来应该在缴费是自动更新,如果你不更新,你可以在DBGrid的OnGetText里写
Text := FormatFloat(格式,FieldByName('本月已收').AsFloat - FieldByName(本月应收).AsFloat + Sender.AsFloat);
Select * From yingjiao Where 月份= 5 Left Join (Select * From yijiao Where 月份 = 5) S On yingjiao.月份 = S.月份
(select sum(b.本月已收) from yishou b where b.编号=a.编号 and b.月份=a.月份) as 本月已收 , a.当前余额
from yingshou a
where a.当前余额>=0 (查询所有数据)
2.欠费情况:select a.编号,a.月份 ,a.本月应收,
(select sum(b.本月已收) from yishou b where b.编号=a.编号 and b.月份=a.月份) as 本月已收 , a.当前余额
from yingshou a
where a.当前余额<0 and a.月份='5' (查询5月份的数据)