首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

看上小弟我这个sql错在哪?主要想学with as的用法

2012-12-14 
看下我这个sql错在哪?主要想学with as的用法本帖最后由 wangbiao_97 于 2012-11-07 14:43:58 编辑with tb1

看下我这个sql错在哪?主要想学with as的用法
本帖最后由 wangbiao_97 于 2012-11-07 14:43:58 编辑

with tb1 as 
(select name as '姓名', 科目='语文', 语文 as result  from  [Temp].[dbo].[行转列]),
with tb2 as 
(select name as '姓名', 科目='数学', 数学 as result  from  [Temp].[dbo].[行转列]),
with 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

报错
消息 156,级别 15,状态 1,第 4 行
关键字 'with' 附近有语法错误。
消息 319,级别 15,状态 1,第 4 行
关键字 'with' 附近有语法错误。如果此语句是公用表表达式或 xmlnamespaces 子句,那么前一个语句必须以分号结尾。
消息 102,级别 15,状态 1,第 5 行
',' 附近有语法错误。
消息 319,级别 15,状态 1,第 6 行
关键字 'with' 附近有语法错误。如果此语句是公用表表达式或 xmlnamespaces 子句,那么前一个语句必须以分号结尾。

[最优解释]

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


[其他解释]
多个CTE不能有多个with
[其他解释]
引用:
SQL code12345678910111213141516171819202122232425262728WITH    tb1          AS ( SELECT   name AS '姓名' ,                        科目 = '语文' ,                        语文 AS result            ……


你速度真快,谢谢,是对的 。
[其他解释]
首先:with的前面你掉了 ; (分号)


然后,如果你想用多个with,那么语法是:with  tmp  as() tmp2 as() 。。。


未完待续


[其他解释]
引用:
首先:with的前面你掉了 ; (分号)


然后,如果你想用多个with,那么语法是:with  tmp  as() tmp2 as() 。。。


未完待续
如果with前面没有其他语句,可以不加;,如果有,必须加
[其他解释]
引用:
引用:首先:with的前面你掉了 ; (分号)


然后,如果你想用多个with,那么语法是:with  tmp  as() tmp2 as() 。。。


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



我感觉还是加着好,反正加它一定不错,但是不加就可能错!

保险起见!

像这样:我在sql里面写with,但是with前面有select * from kaoqinB
select * from kaoqinA

尽管这跟with不大噶,但是要是不加它会提示,缺少分号!



[其他解释]
引用:
引用:
引用:首先:with的前面你掉了 ; (分号)


然后,如果你想用多个with,那么语法是:with  tmp  as() tmp2 as() 。。。


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


我感觉还是加着好,反正加它一定不错,但是不加就可能错!

保险起见!……
你的博客我回复了
[其他解释]
引用:
引用:引用:
引用:首先:with的前面你掉了 ; (分号)


然后,如果你想用多个with,那么语法是:with  tmp  as() tmp2 as() 。。。


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


我感觉还……


谢谢 花 神

你好多的花,我就一个小三角!
[其他解释]
我也“花”了好多时间

热点排行