如何把表1变成表2的显示方式,也就是把原来横向显示变成竖向显示。
或者怎样写sql存储过程来实现。
或者怎样写sql存储过程来实现。
解决方案 »
- sql 2005的sqlexpress启动不了
- 急:求一条SQL
- --帮忙解释下,/u /p /d ......分别代表什么含义
- 这个条件为什么错啊where case when @stdate is null then '' when @stdate is not null then ( tradedate between @stdate and @enddat
- 我做的新年祝福页面,希望大家支持
- 刚装sqlserver2K,请教如何配置才能做为asp的后台
- 把表中数据写到另一个表中
- SQL Server备份后再恢复有些数据会丢失,为什么?
- 求一条一次性插入几百万条数据的sql或存储过程
- 请教SQL Server 2005的高可用性问题?
- 一个sql排序问题
- 关于MSSQL默认值的问题
But sleepyLazy..
so
copy the big one say - -----------------------------------------------------------------------------
/*
表tb,数据如下:
项目种类 业绩 提成
洗吹类 200 10
外卖 100 5
合计 300 15
转换成:
项目种类 洗吹类 外卖 合计
业绩 200 100 300
提成 10 5 15
*/create table tb
(
项目种类 varchar(10),
业绩 int,
提成 int
)insert into tb(项目种类,业绩,提成) values('洗吹类',200,10)
insert into tb(项目种类,业绩,提成) values('外卖' ,100,5)
insert into tb(项目种类,业绩,提成) values('合计' ,300,15)
goselect 项目种类,sum(洗吹类) as 洗吹类 , sum(外卖) as 外卖 , sum(合计) as 合计 from
(
select 项目种类 = '业绩',
洗吹类 = case when 项目种类 = '洗吹类' then 业绩 else 0 end,
外卖 = case when 项目种类 = '外卖' then 业绩 else 0 end,
合计 = case when 项目种类 = '合计' then 业绩 else 0 end
from tb
union all
select 项目种类 = '提成' ,
洗吹类 = case when 项目种类 = '洗吹类' then 提成 else 0 end,
外卖 = case when 项目种类 = '外卖' then 提成 else 0 end,
合计 = case when 项目种类 = '合计' then 提成 else 0 end
from tb
) m
group by 项目种类
order by 项目种类 descdrop table tb/*
项目种类 洗吹类 外卖 合计
-------- ----------- ----------- -----------
业绩 200 100 300
提成 10 5 15(所影响的行数为 2 行)
*/--------------------------------------------------------------------------
sum(case when ...=... then ... else ... end)这是做报表要经常用到的