declare @sql varchar(8000)
set @sql = 'select drivername as ' + '姓名'
select @sql = @sql + ' , max(case  convert(varchar, moneydate  ,120),0,11)   when ''' + convert(varchar, moneydate  ,120),0,11) + ''' then totalmoney else 0 end) [' + convert(varchar, moneydate  ,120),0,11) + ']'
from (select distinct  convert(varchar, moneydate  ,120),0,11)  from moneylist) as a
set @sql = @sql + ' from moneylist group by drivername'
print @sql把结果发上来看看

解决方案 »

  1.   

    伺服器: 訊息 141,層級 15,狀態 1,行 3
    指定變數值的 SELECT 陳述式不得和擷取資料的動作合併。
    伺服器: 訊息 156,層級 15,狀態 1,行 4
    關鍵字 'from' 附近的語法不正確。
      

  2.   

    将你最后一行的exec(@sql)改为print(@sql),将执行结果发出来。
      

  3.   

    伺服器: 訊息 141,層級 15,狀態 1,行 3
    指定變數值的 SELECT 陳述式不得和擷取資料的動作合併。
    伺服器: 訊息 156,層級 15,狀態 1,行 4
    關鍵字 'from' 附近的語法不正確。
      

  4.   

    declare @sql varchar(8000)
    set @sql = 'select name as ' + '姓名'
    select @sql = @sql + ' , max(case moneydate when ''' +moneydate+ ''' then totalmoney else 0 end) [' +moneydate + ']'
    from (select distinct moneydate from test2) as a
    set @sql = @sql + ' from test2 group by name'
    exec(@sql) 
    伺服器: 訊息 241,層級 16,狀態 1,行 3
    從字元 (char) 字串轉換到 datetime 的語法錯誤。
    表里面有两个字段
    一个是NAME 另一个是DATETIME的MONEYDATE
      

  5.   

    declare @sql varchar(8000)
    set @sql = 'select drivername as ' + '姓名'
    select @sql = @sql + ', max(case convert(varchar, moneydate,120) when ''' + convert(varchar, moneydate, 120) + ''' then totalmoney else 0 end) [' + convert(varchar, moneydate, 120) + ']'
    from (select distinct convert(varchar, moneydate, 120) from moneylist) as a
    set @sql = @sql + ' from moneylist group by drivername'
    exec(@sql)
      

  6.   

    convert(varchar, moneydate  ,120),0,11) 这是干什么?