我编写了如下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 代码,是否是因为我编写的代码不规范,在这种转换中出了问题? ~ 但也可能不是 ... 只是猜测,故特此求教
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 代码,是否是因为我编写的代码不规范,在这种转换中出了问题? ~ 但也可能不是 ... 只是猜测,故特此求教
如果你的代碼在查詢分析器中可以運行,那麼在你的代碼前面加上
create view viewname
as
試試.