我编写了如下SQL 代码:select DISTINCT b0.货物编号, b1.出库 'Q1出库', b1.退回 'Q1退库', b2.出库 'Q2出库', b2.退回 'Q2退库', b3.调拨出库, b4.调拨入库, b5.领用, b6.损耗, b7.盘点 
from   (select DISTINCT 货物编号
  from test3.dbo.w4_库房事务表_出退货_调拨) as b0  full outer join   (select DISTINCT a1.货物编号, a1.货物数量 '出库', a2.货物数量 '退回'
  from test3.dbo.w4_库房事务表_出退货_调拨 as a1
  inner join test3.dbo.w4_库房事务表_出退货_调拨 as a2
  on a1.货物编号 = a2.货物编号
  where a1.事件类型 = 1 and a2.事件类型 = 2
  and a1.相关编号 = 'Q0001' and a2.相关编号 = 'Q0001') as b1
  on b0.货物编号 = b1.货物编号  full outer join   (select a3.货物编号, a3.货物数量 '出库', a4.货物数量 '退回'
  from test3.dbo.w4_库房事务表_出退货_调拨 as a3
  inner join test3.dbo.w4_库房事务表_出退货_调拨 as a4
  on a3.货物编号 = a4.货物编号
  where a3.事件类型 = 1 and a4.事件类型 = 2 and a3.相关编号 = 'Q0002' and a4.相关编号 = 'Q0002') as b2
  on b0.货物编号 = b2.货物编号  full outer join   (select 货物编号, 货物数量 '调拨出库'
  from test3.dbo.w4_库房事务表_出退货_调拨 
  where 事件类型 = 3) as b3 
  on b0.货物编号 = b3.货物编号  full outer join   (select 货物编号, 货物数量 '调拨入库'
  from test3.dbo.w4_库房事务表_出退货_调拨 
  where 事件类型 = 4) as b4 
  on b0.货物编号 = b4.货物编号  full outer join   (select 货物编号, 货物数量 '领用'
  from test3.dbo.w5_库房事务表_额外损耗_盘点 
  where 事件类型 = 1) as b5 
  on b0.货物编号 = b5.货物编号  full outer join   (select 货物编号, 货物数量 '损耗'
  from test3.dbo.w5_库房事务表_额外损耗_盘点 
  where 事件类型 = 2) as b6
  on b0.货物编号 = b6.货物编号  full outer join   (select 货物编号, 货物数量 '盘点'
  from test3.dbo.w5_库房事务表_额外损耗_盘点 
  where 事件类型 = 3) as b7 
  on b0.货物编号 = b7.货物编号该代码在新建查询窗口中, 执行运行无任何问题; 在放入SQL Server 2005 的 '视图' 选项的代码窗中也没有任何问题, 且可以通过 '查询设计器' => '验证SQL 句法', 但是一旦在视图窗口中运行, 就会报错, 报错内容为: [ 'AS'附近有语法错误 ], 且一连有8 条这样的错误 ~ 因此, 求教:
1. 这个的产生原因
2. 如何解决
3. 导致这个问题的内部原因是什么? 普通的SQL 代码运行,和把它们作为视图运行,有什么区别? 在SQL Server 2005 中创建视图的过程中是如何区别对待的?p.s: 我个人的猜想是当SQL 代码在视图窗口的运行代码窗里运行时,一旦按了执行按钮,它会对我的SQL 语句(以上这些语句)重新排序,成了一批新编辑格式的SQL 代码,是否是因为我编写的代码不规范,在这种转换中出了问题? ~ 但也可能不是 ... 只是猜测,故特此求教 

解决方案 »

  1.   

    语句、语法均没错。。在(select ..) 的括号后面,直接跟别名,不用AS试试呢?
      

  2.   

    尝试过了,但是不管用(去掉AS 的方法)... 代码依然可以运行,但是到视图窗口底下依然报错采用一种曲线救国的方式可以解决 ... 就是用代码建立视图,而不是在SQL Server 2005 的视图窗口底下但是还是想知道这个正确地应该怎么处理,难道是视图化操作界面的bug ...
      

  3.   

    是不是把中文輸入法狀態下的空格粘貼進去了?
    如果你的代碼在查詢分析器中可以運行,那麼在你的代碼前面加上
    create view viewname
    as
    試試.
      

  4.   

    如我4 楼回的,我用的就是楼上说的这种方法,是可以的,但是只要到视图的窗口界面底下按"执行" 就不行,想知道为什么5 楼这个回复 ... SQL Server 2005 都是在Management Studio 里面操控的,不分企业管理器 ...