create view [dbo.WOvEquip] as select b.eqbarcode,e.typecode,e.typename,e.typedesc, a.wocode,status=case a.flags when 0 then '草稿' when 1 then '处理中' when 2 then '闭单' when 3 then '挂起' end,c.username,a.createdate,d.typename as wotypename,a.wotopic from ( select a.EquipGUID1 as ID,b.wocode,b.creater,b.createdate,b.wtid,b.flags,b.wotopic from WorkCommand a inner join WO_Base b on dbo.IDExists(b.EquipsCommandID,a.id)>0 where (b.flags<>2 and b.IsDel<>0) union select a.EquipGUID2 as ID,b.wocode,b.creater,b.createdate,b.wtid,b.flags,b.wotopic from WorkCommand a inner join WO_Base b on dbo.IDExists(b.EquipsCommandID,a.id)>0 where (b.flags<>2 and b.IsDel<>0 and a.CommandName1='Replace') union select a.EquipGUID1 as ID,b.wocode,b.creater,b.createdate,b.wtid,b.flags,b.re as wotopic from WorkCommand a inner join WO_ChangeRemove b on dbo.IDExists(b.EquipsCommandID,a.id)>0 where (b.flags<>2 and b.IsDel<>0) union Select a.EqID as ID,b.wocode,b.creater,b.createdate,b.wtid,b.flags,b.wotopic from WO_EquipTemp a inner join wo_base b on b.id=a.woid union Select EqID as ID,b.wocode,b.creater,b.createdate,b.wtid,b.flags,b.re as wotopic from WO_ChangeRemove_EquipTemp a inner join wo_changeremove b on b.id=a.wo_changeremoveid union Select EquipID as ID,b.wocode,b.creater,b.createdate,b.wtid,b.flags,b.wotopic from WO_Scheme_Order a inner join wo_base b on b.id=a.woid union Select D.ID,b.wocode,b.creater,b.createdate,b.wtid,b.flags,b.wotopic from WO_Scheme_Over C inner join Equip_Base D on C.EqBarcode=D.EqBarcode inner join wo_base b on b.id=C.woid) a inner join equip_base b on a.id=b.id inner join frame_user c on a.creater=c.usercode inner join wo_type d on a.wtid=d.wtid inner join equip_type e on b.eqtypeid=e.id上面是我的视图,from和a之前的联合查询是可以查出来结果的,但就是创建视图的时候提示错误!zjcxj:不可能是引用数据库错误
as
select b.eqbarcode,e.typecode,e.typename,e.typedesc,
a.wocode,status=case a.flags when 0 then '草稿' when 1 then '处理中' when 2 then '闭单'
when 3 then '挂起' end,c.username,a.createdate,d.typename as wotypename,a.wotopic
from (
select a.EquipGUID1 as ID,b.wocode,b.creater,b.createdate,b.wtid,b.flags,b.wotopic from WorkCommand a
inner join WO_Base b on dbo.IDExists(b.EquipsCommandID,a.id)>0
where (b.flags<>2 and b.IsDel<>0)
union
select a.EquipGUID2 as ID,b.wocode,b.creater,b.createdate,b.wtid,b.flags,b.wotopic from WorkCommand a
inner join WO_Base b on dbo.IDExists(b.EquipsCommandID,a.id)>0
where (b.flags<>2 and b.IsDel<>0 and a.CommandName1='Replace')
union
select a.EquipGUID1 as ID,b.wocode,b.creater,b.createdate,b.wtid,b.flags,b.re as wotopic from WorkCommand a
inner join WO_ChangeRemove b on
dbo.IDExists(b.EquipsCommandID,a.id)>0
where (b.flags<>2 and b.IsDel<>0)
union
Select a.EqID as ID,b.wocode,b.creater,b.createdate,b.wtid,b.flags,b.wotopic from WO_EquipTemp a
inner join wo_base b on b.id=a.woid
union
Select EqID as ID,b.wocode,b.creater,b.createdate,b.wtid,b.flags,b.re as wotopic from WO_ChangeRemove_EquipTemp a
inner join wo_changeremove b on b.id=a.wo_changeremoveid
union
Select EquipID as ID,b.wocode,b.creater,b.createdate,b.wtid,b.flags,b.wotopic from WO_Scheme_Order a
inner join wo_base b on b.id=a.woid
union
Select D.ID,b.wocode,b.creater,b.createdate,b.wtid,b.flags,b.wotopic from WO_Scheme_Over C
inner join Equip_Base D on C.EqBarcode=D.EqBarcode
inner join wo_base b on b.id=C.woid) a
inner join equip_base b on a.id=b.id
inner join frame_user c on a.creater=c.usercode
inner join wo_type d on a.wtid=d.wtid
inner join equip_type e on b.eqtypeid=e.id上面是我的视图,from和a之前的联合查询是可以查出来结果的,但就是创建视图的时候提示错误!zjcxj:不可能是引用数据库错误
应该是
[dbo].[WOvEquip]
在看对应的数据库是否正确
在视图中使用时候,会造成延迟错误。
2、建议:对于包含自定义函数的SQL用一个子视图来包含,而后再次查询这个子视图与标准的SQL进行联合如此可以解决你的问题