表:
t_fy房间(fjh) 费用名称(fymc) 月份(yf) 本月费用(byfy) 本月结余(byjy)
A101 电费 200605 100 0.12
A102 水费 200605 200 0.23
A101 电费 200606 100 0.12
A102 水费 200606 200 0.23
A101 电费 200607 210 0
A102 水费 200607 230 0请问如何得到这样的数据:房间 费用名称 月份 本月费用 本月结余
A101 电费 200607 210 0.12
A102 水费 200607 230 0.23即把200605和200606月份的本月结余显示到200607的月份上。注意:是用一句sql语句实现。谢谢
t_fy房间(fjh) 费用名称(fymc) 月份(yf) 本月费用(byfy) 本月结余(byjy)
A101 电费 200605 100 0.12
A102 水费 200605 200 0.23
A101 电费 200606 100 0.12
A102 水费 200606 200 0.23
A101 电费 200607 210 0
A102 水费 200607 230 0请问如何得到这样的数据:房间 费用名称 月份 本月费用 本月结余
A101 电费 200607 210 0.12
A102 水费 200607 230 0.23即把200605和200606月份的本月结余显示到200607的月份上。注意:是用一句sql语句实现。谢谢
fymc,
yf,
byfy,
Total_byjy=ISNULL((SELECT SUM(byjy)
FROM t_fy AS tmp
WHERE tmp.yf <= t_fy.yf
AND
tmp.fymc = t_fy.fymc),0)
FROM t_fy
WHERE yf = '200607'
如果不包含7月份就把 <= 改成 <
[房间] [varchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[费用名称] [varchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[月份] [varchar] (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[本月费用] [numeric](18, 2) NOT NULL ,
[本月结余] [numeric](18, 2) NOT NULL
) ON [PRIMARY]--模拟数据
INSERT t_fy SELECT 'A101','电费','200605',100,0.12
UNION ALL SELECT 'A102','水费','200605',200,0.23
UNION ALL SELECT 'A101','电费','200606',100,0.12
UNION ALL SELECT 'A102','水费','200606',200,0.23
UNION ALL SELECT 'A101','电费','200607',210,0
UNION ALL SELECT 'A102','水费','200607',230,0--查询
select DISTINCT 房间,费用名称,月份,本月费用,
本月结余=(select sum(本月结余) from t_fy b where a.房间=b.房间 and (b.月份='200606' or b.月份='200605'))
from t_fy a
where 月份='200607'