当前位置: 代码迷 >> Sql Server >> SQL动态行转列解决思路
  详细解决方案

SQL动态行转列解决思路

热度:71   发布时间:2016-04-24 09:09:05.0
SQL动态行转列
之前写了一个动态行转列的SQL,运行并正常而且之后数据库没有进行更改。现在无缘无故该语句不能使用了。求SQL大神帮忙

declare @s nvarchar(4000)
declare @CoNo nchar(8)
set @CoNo='CS123456'
Select  @s=isnull(@s+',','')+quotename([Date]) from Record group by[Date] --isnull(@s+',','') 去掉字符串@s中第一个逗号
exec('select distinct  [sNo],[CoNo],'+@s+',[总成绩] from (select *,[总成绩]=Count([Time])over(partition by [sNo],[CoNo]) 
from Record ) a
pivot (max([Time]) for [Date] in('+@s+'))b ')

错误信息如下:
消息 1038,级别 15,状态 4,第 1 行
缺少对象或列名,或者对象或列名为空。对于 SELECT INTO 语句,请确保每列均具有名称。对于其他语句,请查找空的别名。不允许使用定义为 "" 或 [] 的别名。请将别名更改为有效名称。
消息 1038,级别 15,状态 4,第 2 行
缺少对象或列名,或者对象或列名为空。对于 SELECT INTO 语句,请确保每列均具有名称。对于其他语句,请查找空的别名。不允许使用定义为 "" 或 [] 的别名。请将别名更改为有效名称。
------解决思路----------------------
动态行转列,说明 Date 有空的记录,你检查一下数据
  相关解决方案