本帖最后由 wangbiao_97 于 2012-11-07 14:43:58 编辑

解决方案 »

  1.   

    WITH    tb1
              AS ( SELECT   name AS '姓名' ,
                            科目 = '语文' ,
                            语文 AS result
                   FROM     [Temp].[dbo].[行转列]
                 ),
            tb2
              AS ( SELECT   name AS '姓名' ,
                            科目 = '数学' ,
                            数学 AS result
                   FROM     [Temp].[dbo].[行转列]
                 ),
            tb3
              AS ( SELECT   name AS '姓名' ,
                            科目 = '物理' ,
                            物理 AS result
                   FROM     [Temp].[dbo].[行转列]
                 )
        SELECT  *
        FROM    ( SELECT    *
                  FROM      tb1
                  UNION ALL
                  SELECT    *
                  FROM      tb2
                  UNION ALL
                  SELECT    *
                  FROM      tb3
                ) tb4
      

  2.   

    首先:with的前面你掉了 ; (分号)
    然后,如果你想用多个with,那么语法是:with  tmp  as() tmp2 as() 
    未完待续
      

  3.   

    如果with前面没有其他语句,可以不加;,如果有,必须加
      

  4.   

    我感觉还是加着好,反正加它一定不错,但是不加就可能错!保险起见!像这样:我在sql里面写with,但是with前面有select * from kaoqinB
    select * from kaoqinA尽管这跟with不大噶,但是要是不加它会提示,缺少分号!