select apply.pk_expensecode ,apply.dmakedate,role.name,type.typename,code.expensename,
code_b.expensename expensename_b ,apply.applyname,apply.applycontent,apply.budgetmoney,apply.applymoney,
case
  vbillstatus when 3 then applymoney 
  else 0
end,
bd_psndoc.psnname
from 
clife_master_expensecode code,clife_master_expensecode code_b,
clife_expense_type type,om_role role,
clife_expense_apply apply,clife_expense_apply_b apply_b,
sm_user sm_user,sm_userandclerk,bd_psndoc
where
code.pk_expensecode=code_b.pk_father and 
code.pk_expensetype=type.pk_expensetype and
code.pk_role=role.pk_role and
apply.pk_apply=apply_b.pk_apply and 
(code_b.pk_expensecode=apply.pk_expensecode 
    or code_b.pk_expensecode in (select pk_father 
                            from clife_master_expensecode
   where apply.pk_expensecode = code.pk_expensecode))
and
sm_user.cuserid = sm_userandclerk.userid  and
sm_userandclerk.pk_psndoc = bd_psndoc.pk_psndoc and
sm_user.cuserid = apply.coperatorid
order by apply.dmakedate desc

解决方案 »

  1.   

    select * from (
    select apply.pk_expensecode ,apply.dmakedate,role.name,type.typename,code.expensename,
    code_b.expensename expensename_b ,apply.applyname,apply.applycontent,apply.budgetmoney,apply.applymoney,
    case
      vbillstatus when 3 then applymoney 
      else 0
    end,
    bd_psndoc.psnname
    from 
    clife_master_expensecode code 
    inner join clife_master_expensecode code_b
    on 
    code.pk_expensecode=code_b.pk_father 
    inner join clife_expense_type type
    on
    code.pk_expensetype=type.pk_expensetype
    inner join om_role role
    on 
    code.pk_role=role.pk_role
    inner join clife_expense_apply apply
    inner join clife_expense_apply_b apply_b
    on apply.pk_apply=apply_b.pk_apply
    inner join sm_user sm_user
    inner join sm_userandclerk
    inner join bd_psndoc
    where 
    code_b.pk_expensecode=apply.pk_expensecode
    and
    sm_user.cuserid = sm_userandclerk.userid  and
    sm_userandclerk.pk_psndoc = bd_psndoc.pk_psndoc and
    sm_user.cuserid = apply.coperatorid
    union all
    select apply.pk_expensecode ,apply.dmakedate,role.name,type.typename,code.expensename,
    code_b.expensename expensename_b ,apply.applyname,apply.applycontent,apply.budgetmoney,apply.applymoney,
    case
      vbillstatus when 3 then applymoney 
      else 0
    end,
    bd_psndoc.psnname
    from 
    clife_master_expensecode code 
    inner join clife_master_expensecode code_b
    on 
    code.pk_expensecode=code_b.pk_father 
    inner join clife_expense_type type
    on
    code.pk_expensetype=type.pk_expensetype
    inner join om_role role
    on 
    code.pk_role=role.pk_role
    inner join clife_expense_apply apply
    inner join clife_expense_apply_b apply_b
    on apply.pk_apply=apply_b.pk_apply
    inner join sm_user sm_user
    inner join sm_userandclerk
    inner join bd_psndoc
    where 
    code_b.pk_expensecode in (select pk_father 
                                from clife_master_expensecode
       where apply.pk_expensecode = code.pk_expensecode
    and
    sm_user.cuserid = sm_userandclerk.userid  and
    sm_userandclerk.pk_psndoc = bd_psndoc.pk_psndoc and
    sm_user.cuserid = apply.coperatorid)
    order by dmakedate desc
    --晕了
      

  2.   

    92标准
    http://dev.mysql.com/tech-resources/crash-me.php