当前位置: 代码迷 >> Sql Server >> SQL列变行,该如何处理
  详细解决方案

SQL列变行,该如何处理

热度:89   发布时间:2016-04-24 09:37:52.0
SQL列变行,,
下面是列变行的SQL(百度的,,,,)

DECLARE @sql VARCHAR(8000)
SELECT @sql= ISNULL(@sql+',','')+spname FROM t_Xiaoshou
GROUP BY spname           
SET @sql='select * from t_Xiaoshou pivot (max(Spshuliang) for spname in ('+@sql+'))a'
exec(@sql)

运行是没错的,运行截图为:


表t_Xiaoshou中的数据为:


那么问题来了。
一:我要运行结果不显示Khbianhao,Psybianhao,Spbianhao,Xsshijian,应该怎么搞。
二:我要可以根据psyname(或者psybianhao)  和 Xsshijian查询应该怎么搞。
跪谢各位
------解决思路----------------------
DECLARE @sql VARCHAR(8000)
SELECT @sql= ISNULL(@sql+',','')+spname FROM t_Xiaoshou
GROUP BY spname           
--SET @sql='select * from t_Xiaoshou pivot (max(Spshuliang) for spname in ('+@sql+'))a'
SET @sql='select khname, '+@sql+' from t_Xiaoshou pivot (max(Spshuliang) for spname in ('+@sql+'))a'
exec(@sql)
加个半角逗号
------解决思路----------------------
DECLARE @sql VARCHAR(8000)
SELECT @sql= ISNULL(@sql+',','')+spname FROM t_Xiaoshou
GROUP BY spname           
SET @sql='select khname, '+@sql+' from (select * from t_Xiaoshou where Xsshijian='''')T pivot (max(Spshuliang) for spname in ('+@sql+'))a'
exec(@sql)
是这个意思吗
  相关解决方案