CREATE View V_aa
As(select *,(Isnull(view3,0) +Isnull(hetonge1,0) +Isnull(view2,0)) As view4 from
(Select 
liulan1,
liulan2,
liulan3,
liulan4,
liulan5,
liulan5*bilu3 As view1,
feiyong8*bilu3 As view2,
hetonge1,
(Case When IsNull(bilu10,0.0)=0 Then 0 Else feiyong1*bilu10 End) As view3
From liulan 
Where IsNull(bilu3 ,0)<>0) A)or
(select *,(Isnull(view3,0) +Isnull(hetonge1,0) +Isnull(view2,0)) As view4 from
(Select 
liulan1,
liulan2,
liulan3,
liulan4,
liulan5,
isnull(liulan5,0)*isnull(bilu3,0) As view1,
isnull(feiyong8,0)*isnull(bilu3,0) As view2,
hetonge1,
(Case When IsNull(bilu10,0.0)=0 Then 0 Else feiyong1*bilu10 End) As view3
From liulan 
where isnull(bilu3,0)=0)A) and (view3>0 or hetonge1>0) 谢谢CSDN朋友的帮忙,条件有些改变,我又在原有基础上加了从“or到下面的语句”。(or之前语句没有问题)
想要实现的目的是:当 bilu3=0,并且view3或hetonge1中有一数据大于0时,也取到结果集中,请问这种写种是哪里错了?(提示在or和最后一行and处有错)大家帮看下,先谢谢了

解决方案 »

  1.   

    --tryCREATE View V_aa
    Asselect *,(Isnull(view3,0) +Isnull(hetonge1,0) +Isnull(view2,0)) As view4 from
    (Select 
    liulan1,
    liulan2,
    liulan3,
    liulan4,
    liulan5,
    liulan5*bilu3 As view1,
    feiyong8*bilu3 As view2,
    hetonge1,
    (Case When IsNull(bilu10,0.0)=0 Then 0 Else feiyong1*bilu10 End) As view3
    From liulan 
    Where IsNull(bilu3 ,0)<>0
    ) A
     union all
    select *,(Isnull(view3,0) +Isnull(hetonge1,0) +Isnull(view2,0)) As view4 from
    (
    Select 
    liulan1,
    liulan2,
    liulan3,
    liulan4,
    liulan5,
    isnull(liulan5,0)*isnull(bilu3,0) As view1,
    isnull(feiyong8,0)*isnull(bilu3,0) As view2,
    hetonge1,
    (Case When IsNull(bilu10,0.0)=0 Then 0 Else feiyong1*bilu10 End) As view3
    From liulan 
    where isnull(bilu3,0)=0
    and
    ((Case When IsNull(bilu10,0)=0 Then 0 Else feiyong1*bilu10 End)>0 or hetonge1>0) 
    )A--合并结果集是用Union,而不是or(用or不是这样写的)-_-
      

  2.   

    --try
    CREATE View V_aa
    Asselect *,(Isnull(view3,0) +Isnull(hetonge1,0) +Isnull(view2,0)) As view4 from
    (Select 
    liulan1,
    liulan2,
    liulan3,
    liulan4,
    liulan5,
    liulan5*bilu3 As view1,
    feiyong8*bilu3 As view2,
    hetonge1,
    (Case When IsNull(bilu10,0.0)=0 Then 0 Else feiyong1*bilu10 End) As view3
    From liulan 
    Where IsNull(bilu3 ,0)<>0) A
    union all
    select *,(Isnull(view3,0) +Isnull(hetonge1,0) +Isnull(view2,0)) As view4 from 
    (Select 
    liulan1,
    liulan2,
    liulan3,
    liulan4,
    liulan5,
    isnull(liulan5,0)*isnull(bilu3,0) As view1,
    isnull(feiyong8,0)*isnull(bilu3,0) As view2,
    hetonge1,
    (Case When IsNull(bilu10,0.0)=0 Then 0 Else feiyong1*bilu10 End) As view3
    From liulan 
    where  isnull(bilu3,0)=0 and (view3>0 or hetonge1>0 ) )A