解决方案 »
- 寻求一个 sql (急)
- 在触发器中如何得到一个新插入记录的值?
- 一个字段最多可以存放多少字节
- 备份时 直接备份在磁盘上和备份在备份设备里有什么不同的效果吗
- oracle中有像sqlserver事件查看器的功能吗?有的话,在那找到?thanks
- 哪里有这个CDataGrid类的reference?谢谢
- 请问删除一个数据库中的所有表,除一个name表外,用什么sql语句??
- sql server 2008 数据库引擎优化顾问不支持SQL express
- 帮小妹优化一条SQL语句拉,谢谢各位!!!
- 求嵌套查询语句
- Mongodb 数据库导出 JSON 格式的数据能不能选择不要 ObjectId?
- 自己电脑不能连1433端口,什么原因呀?
declare @s varchar(max)select @s=isnull(@s+',','')+'sum(case when tcode='''+tcode+''' then total else 0 end) as ['+tcode+']' from T1 group by tcodeset @s='select name as 姓名,'+@s+ ' from T1 group by name'exec(@s)
select name,
sum(case when tcode='瓷砖' then total else 0 end) as 瓷砖,
sum(case when tcode='地暖' then total else 0 end) as 地暖,
sum(case when tcode='空调' then total else 0 end) as 空调,
sum(case when tcode='品牌家具' then total else 0 end) as 品牌家具,
sum(case when tcode='地漏' then total else 0 end) as 地漏
from T1
group by name
如果tcode的數據很多或不明確,就要使用動態sql拼接。
--试试
declare @s nvarchar(4000)
Select @s=isnull(@s+',','')+quotename(tcode)
from T1 group by tcode --isnull(@s+',','') 去掉字符串@s中第一个逗号
print @s
exec('select name,'+@s+' from (select *,total_sum=sum(T1.total)over(partition by name) from T1) a
pivot (sum(total) for tcode in('+@s+'))b ')
SET @SQL=''
SELECT @SQL=@SQL+',['+tcode+']'FROM T1 GROUP BY tcode
SET @SQL='SELECT * FROM T1 PIVOT(SUM(total)FOR tcode IN('+STUFF(@SQL,1,1,'')+'))P'
EXEC(@SQL)