--如果dhotelname是固定的
Select
det,
SUM(Case dhotelname When '度假村' Then dpeople Else 0 End)As 度假村人数,
SUM(Case dhotelname When '影都' Then dpeople Else 0 End)As 影都人数,
SUM(Case dhotelname When '休闲山庄' Then dpeople Else 0 End)As 休闲山庄人数
From
表
Group By
det--如果dhotelname不是固定的
Declare @S Varchar(8000)
Select @S = ' Select det'
Select @S = @S + ',SUM(Case dhotelname When ''' + dhotelname + ''' Then dpeople Else 0 End)As ' + dhotelname + '人数'
From 表 Group By dhotelname
Select @S = @S + ' From 表 Group By det'
EXEC(@S)
Select
det,
SUM(Case dhotelname When '度假村' Then dpeople Else 0 End)As 度假村人数,
SUM(Case dhotelname When '影都' Then dpeople Else 0 End)As 影都人数,
SUM(Case dhotelname When '休闲山庄' Then dpeople Else 0 End)As 休闲山庄人数
From
表
Group By
det--如果dhotelname不是固定的
Declare @S Varchar(8000)
Select @S = ' Select det'
Select @S = @S + ',SUM(Case dhotelname When ''' + dhotelname + ''' Then dpeople Else 0 End)As ' + dhotelname + '人数'
From 表 Group By dhotelname
Select @S = @S + ' From 表 Group By det'
EXEC(@S)
解决方案 »
- 问个返回结果集的问题
- 写存储遇到一个简单的问题
- 求教一条Sql语句查询“累计交易金额最高的卡号”
- 问个SQL查询傻瓜问题,多谢
- ////////SQL 2008 //////////
- varchar 到底容量是多少?
- 重大发现 :同一个sql语句在查询分析器中的结果不一致
- 斑竹请帮忙寻书:Microsoft SQL Server 2000 Performance Optimization and Tuning Handbook
- java访问sqlserver出错:高手快来帮忙啊!!!
- 请教,vfp的sql查询结果如何正确结合报表文件打印及预览?
- 查询大数据量时,出现超时,怎么办?
- 两个表之间的查询问题
select det,'度假村',(case dhotelname when '度假村' then dpeople end) as dpeople1,
'影都',(case dhotelname when '影都' then dpeople end) as dpeople2,
'休闲山庄',(case dhotelname when '休闲山庄' then dpeople end) as dpeople1
from table1
如果不固定 用动态SQL,搜索 行转列
drop table tbTest
GO
create table tbTest(det varchar(10), dhotelname varchar(10),dpeople int)
insert tbTest
select '上海','度假村', 12 union all
select '上海','影都', 12 union all
select '上海','休闲山庄', 12declare @sql varchar(8000)
set @sql = 'select det'
select @sql = @sql + ',' + dhotelname + '=max(case dhotelname when ''' + dhotelname + ''' then dhotelname end),
人数 = sum(case dhotelname when ''' + dhotelname + ''' then dpeople else 0 end)'
from tbTest group by dhotelname
EXEC(@sql + ' from tbTest group by det')
drop table tbTest/*结果
det 度假村 人数 休闲山庄 人数 影都 人数
--------------------------------------------------------------
上海 度假村 12 休闲山庄 12 影都 12
*/