select 合同金额,项目名称,已付金额,运算结果 
from 
(
select 合同金额,项目名称,已付金额,
case when 条件1 then 运算结果1 else 0 end as flag1,  
case when 条件2 then 运算结果2 else 0 end as flag2,   
case when.... end  as flag10   -- 筛选出这些项目下所有满足付款条件的记录
from tabname where 项目id  in  
(select distinct 项目id from tabname where 已付金额 < 合同金额) 
)t      -- 筛选出已付金额小于合同金额的项目
where flag1 <> 0 or flag2 <> 0 union allselect 合同金额,项目名称,已付金额,运算结果 
from 
(
select 合同金额,项目名称,已付金额,
case when 条件1 then 运算结果1 else 0 end as flag1,  
case when 条件2 then 运算结果2 else 0 end as flag2,   
case when.... end  as flag10   
from tabname where 项目id  in  
(select distinct 项目id from tabname where 已付金额 < 合同金额) 
)t      
where flag1 = 0 or flag2 = 0非常感谢“阳泉酒家小当家”的回复,这样就可以满足我的筛选要求,但是,如何把运算结果显示出来呢?(我的运算结果是应付款金额,有多种计算方法,即运算结果1、2……10等)[/code]

解决方案 »

  1.   

    select 合同金额,项目名称,已付金额,运算结果 
    from 
    (
    select 合同金额,项目名称,已付金额,
    case when 条件1 then 运算结果1 else 0 end as flag1,  
    case when 条件2 then 运算结果2 else 0 end as flag2,   
    case when.... end  as flag10   -- 筛选出这些项目下所有满足付款条件的记录
    from tabname where 项目id  in  
    (select distinct 项目id from tabname where 已付金额 < 合同金额) 
    )t      -- 筛选出已付金额小于合同金额的项目
    where flag1 <> 0 or flag2 <> 0 union all
     
    select 合同金额,项目名称,已付金额,运算结果 
    from 
    (
    select 合同金额,项目名称,已付金额,
    case when 条件1 then 运算结果1 else 0 end as flag1,  
    case when 条件2 then 运算结果2 else 0 end as flag2,   
    case when.... end  as flag10   
    from tabname where 项目id  in  
    (select distinct 项目id from tabname where 已付金额 < 合同金额) 
    )t      
    where flag1 = 0 or flag2 = 0非常感谢“阳泉酒家小当家”的回复,这样就可以满足我的筛选要求,但是,如何把运算结果显示出来呢?(我的运算结果是应付款金额,有多种计算方法,即运算结果1、2……10等)
      

  2.   


    如果是要把10个运算结果都显示出来,可以这样:select 合同金额,项目名称,已付金额,flag1,flag2,flag3...,flag10
    from 
    (
    select 合同金额,项目名称,已付金额,
    case when 条件1 then 运算结果1 else 0 end as flag1,  
    case when 条件2 then 运算结果2 else 0 end as flag2,   
    case when.... end  as flag10   -- 筛选出这些项目下所有满足付款条件的记录
    from tabname where 项目id  in  
    (select distinct 项目id from tabname where 已付金额 < 合同金额) 
    )t      -- 筛选出已付金额小于合同金额的项目
    where flag1 <> 0 or flag2 <> 0 union all
      
    select 合同金额,项目名称,已付金额,flag1,flag2,flag3...,flag10
    from 
    (
    select 合同金额,项目名称,已付金额,
    case when 条件1 then 运算结果1 else 0 end as flag1,  
    case when 条件2 then 运算结果2 else 0 end as flag2,   
    case when.... end  as flag10   
    from tabname where 项目id  in  
    (select distinct 项目id from tabname where 已付金额 < 合同金额) 
    )t      
    where flag1 = 0 or flag2 = 0
      

  3.   

    合同金额,项目名称,已付金额
               1        a        运算结果1
               2        b        运算结果2
               3        c        …… 
               4        a        运算结果10    我要这样的结果