2016-03-24 9 views
0

Tüm iş akışı bilgilerinin bir sonucunu döndürmek istediğim bir iş akışı tablosum var. Aynı zamanda, uygulama türünü ve iş akışının son tarihini uygulama kapanış tarihi olarak kategorize etmek için ek sütunlar oluşturmak istiyorum. ÖrneğinBir iş akışında SQL maksimum tarihi

:

table name: Approval_Workflow 

Key ID Status   Comment  timestamp 
001 e1f submit   none   01/05/2016   
001 f64 in process  Review  01/06/2016 
001 2l5 return to user missing info 01/08/2016 
001 8n8 resubmit  none   01/10/2016 
001 gr0 approve  none   01/10/2016 
001 b3u activated  none   01/15/2016 
002 nb9 submit   none   01/08/2016 
002 us1 in progress Review  01/08/2016 
002 cs6 approve  none   01/08/2016 
002 yt2 activated  none   01/10/2016 

I kendisine bağlantılı tablo ve başarılı bir şekilde uygulamanın türü kategorize

Key ID Status   Comment  timestamp type  closedate 
001 e1f submit   none   01/05/2016 bad appl 01/15/2016  
001 f64 in process  Review  01/06/2016 bad appl 01/15/2016 
001 2l5 return to user missing info 01/08/2016 bad appl 01/15/2016 
001 8n8 resubmit  none   01/10/2016 bad appl 01/15/2016 
001 gr0 approve  none   01/10/2016 bad appl 01/15/2016 
001 b3u activated  none   01/15/2016 bad appl 01/15/2016 
002 nb9 submit   none   01/08/2016 good appl 01/10/2016 
002 us1 in progress Review  01/08/2016 good appl 01/10/2016 
002 cs6 approve  none   01/08/2016 good appl 01/10/2016 
002 yt2 activated  none   01/10/2016 good appl 01/10/2016 

gösteren ek sütunlu sonucu elde etmek istiyorum. Ancak, iş akışının maksimum tarihini almak için MAX() işlevini kullanmaya çalıştığımda, her iş akışı tarihi ile aynı tarihi almaya devam ediyorum. Ayrıca, "etkinleştirilmiş" durumun kapandığı tarih olan, ancak başarılı olmayan bir tarih bulmaya çalışıyorum.

Yardımınız büyük beğeni topluyor.

+0

Neresi nereden geliyor? – xQbert

+0

Hangi veritabanını kullanıyorsunuz? "Type" sütunu için mantık nedir? –

cevap

1

Bunun için ANSI standart pencere işlevlerini kullanabilirsiniz. "kullanıcı dönüş" kötü bir uygulama anlamına varsayarsak: key, type ve timestamp birçok veritabanlarında anahtar olduğunu

select awf.*, 
     (case when sum(case when status = 'return to user' then 1 else 0 end) over (partition by key) > 0 
      then 'bad appl' 
      else 'good appl' 
     end) as type, 
     max(timestamp) over (partition by key) as closeddate 
from Approval_Workflow awf; 

Not, bu yüzden sütunlar için en iyi isimleri değildir.

+0

TEŞEKKÜRLER !!!! Yani bitti (bölüm tarafından ...) hile yapar. Çok çok teşekkür ederim! – Tuatara

İlgili konular