sqlserver 统计报表的 sql语句怎么写
表数据。
khdm name money
儿科医院 NULL 12500
复高公司 办公用品费 66700
金山医院 办公用品费 10100
景德镇第一 办公用品费 43800
上海国际医学中心 办公用品费 36750
郑州儿医 办公用品费 50000
NULL 笔记本电脑 659800
丰城医院 笔记本电脑 196000
复高公司 笔记本电脑 2204395
景德镇第一 笔记本电脑 200000
上海儿童 笔记本电脑 400000
上海江湾 笔记本电脑 161000
万柏林笔记本电脑 200000
崇明二院(堡镇) 餐费 26500
崇明三院(庙镇) 餐费 58000
崇明中心医院 餐费 16000
儿科医院 餐费 25800
复高公司 餐费 857310
我要 弄一个统计报表
要求展示的数据 跟下面的例子一样
khjc 办公用品费 笔记本电脑费 (等等费用) 合计
复高公司 66700 2204395 等等
求sql语句,,
sql 统计
[解决办法]
IF OBJECT_ID('T_CSDN_ONE') IS NOT NULL
BEGIN
DROP TABLE dbo.T_CSDN_ONE;
END
GO
CREATE TABLE T_CSDN_ONE
(
KHDM VARCHAR(50),
[NAME] VARCHAR(50),
MONERY DECIMAL(12,2)
)
GO
INSERT INTO dbo.T_CSDN_ONE
SELECT
'儿科医院',NULL,12500
UNION ALL
SELECT
'复高公司','办公用品费',66700
UNION ALL
SELECT
'金山医院','办公用品费',10100
UNION ALL
SELECT
'景德镇第一','办公用品费',43800
UNION ALL
SELECT
'上海国际医学中心','办公用品费',36750
UNION ALL
SELECT
'郑州儿医','办公用品费',50000
UNION ALL
SELECT
'NULL','笔记本电脑',659800
UNION ALL
SELECT
'丰城医院','笔记本电脑',196000
UNION ALL
SELECT
'复高公司','笔记本电脑',2204395
UNION ALL
SELECT
'景德镇第一','笔记本电脑',200000
UNION ALL
SELECT
'上海儿童','笔记本电脑',400000
UNION ALL
SELECT
'上海江湾','笔记本电脑',161000
UNION ALL
SELECT
'万柏林','笔记本电脑',200000
UNION ALL
SELECT
'崇明二院(堡镇)','餐费',26500
UNION ALL
SELECT
'崇明三院(庙镇)','餐费',58000
UNION ALL
SELECT
'崇明中心医院','餐费',16000
UNION ALL
SELECT
'儿科医院','餐费',25800
UNION ALL
SELECT
'复高公司','餐费',857310
SELECT KHDM,
SUM(CASE [NAME] WHEN '餐费' THEN MONERY ELSE 0 END) AS CF,
SUM(CASE [NAME] WHEN '笔记本电脑' THEN MONERY ELSE 0 END) AS BJBDN,
SUM(CASE [NAME] WHEN '办公用品费' THEN MONERY ELSE 0 END) AS BGYPF
FROM dbo.T_CSDN_ONE GROUP BY KHDM
--动态语句
declare @sql varchar(8000)
select @sql = isnull(@sql + '],[' , '') + NAME from T_CSDN_ONE group by NAME
set @sql = '[' + @sql + ']'
EXEC ('select * from (select * from T_CSDN_ONE) a pivot (SUM(ISNULL(MONERY,0) for NAME in (' + @sql + ')) b')
create table hu
(khdm varchar(20), name varchar(20), [money] int)
insert into hu
select '儿科医院', null, 12500 union all
select '复高公司', '办公用品费', 66700 union all
select '金山医院', '办公用品费', 10100 union all
select '景德镇第一', '办公用品费', 43800 union all
select '上海国际医学中心', '办公用品费', 36750 union all
select '郑州儿医', '办公用品费', 50000 union all
select null, '笔记本电脑', 659800 union all
select '丰城医院', '笔记本电脑', 196000 union all
select '复高公司', '笔记本电脑', 2204395 union all
select '景德镇第一', '笔记本电脑', 200000 union all
select '上海儿童', '笔记本电脑', 400000 union all
select '上海江湾', '笔记本电脑', 161000 union all
select '万柏林', '笔记本电脑', 200000 union all
select '崇明二院(堡镇)', '餐费', 26500 union all
select '崇明三院(庙镇)', '餐费', 58000 union all
select '崇明中心医院', '餐费', 16000 union all
select '儿科医院', '餐费', 25800 union all
select '复高公司', '餐费', 857310
select khdm,isnull([办公用品费],0) '办公用品费',
isnull([笔记本电脑],0) '笔记本电脑费',
isnull([办公用品费],0)+isnull([笔记本电脑],0)+isnull([餐费],0) '合计'
from hu a
pivot(max([money]) for name in([办公用品费],[笔记本电脑],[餐费])) p
/*
khdm 办公用品费 笔记本电脑费 合计
-------------------- ----------- ----------- -----------
NULL 0 659800 659800
崇明二院(堡镇) 0 0 26500
崇明三院(庙镇) 0 0 58000
崇明中心医院 0 0 16000
儿科医院 0 0 25800
丰城医院 0 196000 196000
复高公司 66700 2204395 3128405
金山医院 10100 0 10100
景德镇第一 43800 200000 243800
上海儿童 0 400000 400000
上海国际医学中心 36750 0 36750
上海江湾 0 161000 161000
万柏林 0 200000 200000
郑州儿医 50000 0 50000
(14 row(s) affected)
*/