2013-07-29 45 views
0

我想在此表中添加另一列,如果第一批付款的模式为“现金”和第二批付款模式为“电子”,则在PersonID前面会出现一个名为“Cash to Electronic”的现金。如何检查一个条件的两条SQL记录?

PersonID InstalmentNumber DateOfInstalment   Mode 
50023467 2     15-Mar-12    Electronic 
50023467 1     15-Feb-12    Electronic 
50023468 2     5-Apr-12    Cash 
50023468 1     5-Mar-12    Cash 
50023469 2     15-Mar-12    Electronic 
50023469 2     15-Mar-12    Electronic 
50023469 1     15-Feb-12    Electronic 
50023469 1     15-Feb-12    Cash 
50027967 2     15-Mar-12    Electronic 

预期输出:

PersonID InstalmentNumber DateOfInstalment   Mode   Flag 
50023467 2     15-Mar-12    Electronic  
50023467 1     15-Feb-12    Electronic 
50023468 2     5-Apr-12    Cash 
50023468 1     5-Mar-12    Cash 
50023469 2     15-Mar-12    Electronic 
50023469 2     15-Mar-12    Electronic 
50023469 1     15-Feb-12    Cash 
50023469 1     15-Feb-12    Cash   Cash To Electronic 
50027967 2     15-Mar-12    Electronic 
+0

什么是预期的输出? –

+0

@MontyPython你认为我的回答? – Parado

回答

2

试试这个方法:

select distinct t.PersonID,t.InstalmentNumber,t.DateOfInstalment,t.Mode, 
     case 
      when x.PersonID is not null 
      and t.Mode = 'Cash' 
      and t.InstalmentNumber = 1 
      then 'Cash to Electronic' 
      else null 
     end as Flag 
from tab t 
left join tab x on x.PersonID = t.PersonID AND 
        x.Mode = 'Electronic' AND 
        x.InstalmentNumber = 2 

Sql Fiddle Demo