收房租相关-一个数据内容变列的SQL
求助收房租相关----------------一个数据内容变列的SQL?
是这样的,有一个收支表Pay,记录房租收支记录,结构如下,
现在客户要求,不仅要汇总同一天,同一房间,还要最扣做合计..
把记录里的"收支类型",变成列显示.像下面的第2个表显示,请问如何写SQL?
2.
日期 房间编号 收押金 退押金 房费 水费 卫生费 有线费 网费 电费 合计
------------------------------------------------------------------------------------------------------------------------------------------
2014-10-1 301房 200 0 0 0 00 10 5 0 0 55 270
......
------解决思路----------------------
收支类型自己补齐
------解决思路----------------------
是这样的,有一个收支表Pay,记录房租收支记录,结构如下,
现在客户要求,不仅要汇总同一天,同一房间,还要最扣做合计..
把记录里的"收支类型",变成列显示.像下面的第2个表显示,请问如何写SQL?
1.表Pay结构,主要记录所有房租收支记录
InNo nvarchar(25) Checked //收支编号
InDate nvarchar(15) Checked //收支日期
InType nvarchar(15) Checked //收支类型,包括(收押金/退押金/房费/水费/卫生费/有线费/网费/电费)
ClientName nvarchar(25) Checked //房间编号
Cost numeric(18, 2) Checked //收支费用
2.
日期 房间编号 收押金 退押金 房费 水费 卫生费 有线费 网费 电费 合计
------------------------------------------------------------------------------------------------------------------------------------------
2014-10-1 301房 200 0 0 0 00 10 5 0 0 55 270
......
------解决思路----------------------
SELECT InDate 日期,
ClientName 房间编号,
SUM(CASE InType WHEN '收押金' THEN cost ELSE 0 END) 收押金,
SUM(CASE InType WHEN '退押金' THEN cost ELSE 0 END) 退押金,
...
SUM(CASE InType WHEN '电费' THEN cost ELSE 0 END) 电费,
SUM(cost) 合计
FROM pay
GROUP BY InDate, ClientName
收支类型自己补齐
------解决思路----------------------
select
InDate as 日期,
ClientName as 房间编号,
max(case when InType=‘收押金' then Cost else 0 end) as 收押金,
max(case when InType=‘退押金' then Cost else 0 end) as 退押金,
.....中间的自己写,
sum(Cost) as 合计
from
pay
group by
InDate, ClientName