我现在在家,明天早上回公司把SQL贴出来,谢谢!

解决方案 »

  1.   

    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:不可能是引用数据库错误
      

  2.   

    [dbo.WOvEquip]
    应该是
    [dbo].[WOvEquip]
      

  3.   

    [dbo.WOvEquip] 该为 [dbo].[WOvEquip]
     在看对应的数据库是否正确
      

  4.   

    [dbo].[WOvEquip]这种写法是推荐写法,上边的也没有问题啊!我尝试过我觉得问题是:1、对于你的自定义函数dbo.IDExists(b.EquipsCommandID,a.id)>0 
    在视图中使用时候,会造成延迟错误。
    2、建议:对于包含自定义函数的SQL用一个子视图来包含,而后再次查询这个子视图与标准的SQL进行联合如此可以解决你的问题