请朋友们帮忙写出SQL语句.感谢!在线等!!
发布网友
发布时间:2023-02-09 11:38
我来回答
共3个回答
热心网友
时间:2024-11-28 18:21
--建立测试数据
create table tb
(姓名 varchar(20) null,
费用类型 varchar(20) null,
费用金额 decimal null
)
go
insert into tb
select 'XM1','交通费',50
union all
select 'XM1','交通费',40
union all
select 'XM1','餐饮费',60
union all
select 'XM1','餐饮费',60
union all
select 'XM1','办公费',30
union all
select 'XM1','办公费',30
union all
select 'XM2','办公费',30
union all
select 'XM2','办公费',60
go
--查询语句
declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ' , sum(case 费用类型 when ''' +费用类型+ ''' then 费用金额 else 0 end) [' + 费用类型 + ']'
from (select distinct 费用类型 from tb) as a
set @sql = @sql + ' from tb group by 姓名'
--print (@sql)
exec(@sql)
--------------------结果集------------------------------
姓名 办公费 餐饮费 交通费
-------------------- ---------------------------------------- ---------------------------------------- ----------------------------------------
XM1 60 120 90
XM2 90 0 0
--删除测试数据
drop table tb追问谢谢,非常感谢
我还要横向求和
姓名 交通费 餐饮费 办公费 ........总计
XM1 90 120 80 290
..
..
热心网友
时间:2024-11-28 18:22
SELECT A.姓名,
(SELECT SUM(费用金额) FROM 表 WHERE 姓名 = A.姓名 AND 费用类型 = '交通费') AS 交通费,
(SELECT SUM(费用金额) FROM 表 WHERE 姓名 = A.姓名 AND 费用类型 = '餐饮费') AS 餐饮费,
(SELECT SUM(费用金额) FROM 表 WHERE 姓名 = A.姓名 AND 费用类型 = '办公费') AS 办公费,
...
(SELECT SUM(费用金额) FROM 表 WHERE 姓名 = A.姓名) AS 总计
From
(SELECT DISTINCT 姓名 FROM 表) A
热心网友
时间:2024-11-28 18:22
1楼的不是写出来了嘛,合计在from前加个sum即可啊
set @sql = @sql + ', [合计]=sum(费用金额) from tb group by 姓名'