orderid 是int类型
display_item 是varchar类型
为什么我将display_item作为列名就可以,而将orderid作为列名则出错?以下是display_item作为列名
select * from (select project,display_item,orderid from design_bom_displayformat) a 
pivot (max(orderid) for display_item
 in (area,module,specialty)) b以下是orderid作为列名,会报错
select * from (select project,display_item,orderid from design_bom_displayformat) a 
pivot (max(display_item) for orderid
 in (1,2,3)) b
错误信息为:
消息 102,级别 15,状态 1,第 3 行
'1' 附近有语法错误。

解决方案 »

  1.   

    select * from (select project,display_item,orderid from design_bom_displayformat) a 
     pivot (max(display_item) for orderid
      in ([1],[2],[3])) b
      

  2.   

    SELECT  *
    FROM    ( SELECT    project ,
                        display_item ,
                        orderid
              FROM      design_bom_displayformat
            ) a PIVOT ( MAX(display_item) FOR orderid IN ( [1], [2], [3] ) ) b
    联机丛书的语法:你可以看到是要加[]的。不用管为什么,记住就好了
    PIVOT(    <聚合函数>(<要聚合的列>)FOR[<包含要成为列标题的值的列>]    IN ( [第一个透视的列], [第二个透视的列],    ... [最后一个透视的列])) AS <透视表的别名>