2012-02-03 3 views
0

主に、現役メンバーのリストを見つけるのに最も実用的な方法が必要です。ここで データのSQLギャップ - 登録日とディスエンロール日 'Active_members'

は例のデータは、私が今disenroll日にあるnull値は0年代を
client policy holder id suffix  payor_id enroll date disenroll date 
A04  GRH130007068  e  GRH0000013000 2009-01-01  0  
A04  GRH130007651  e  GRH0000013000 2010-10-01 2010-10-31 
A04  GRH130007887  2  GRH0000013000 2010-10-01 2011-01-31   
A04  GRH130008979  e  GRH0000013000 2009-01-01  0  
A04  GRH130009628  e  GRH0000013000 2006-01-01  0 

を使用していますように設定されています。したがって、この構文を使用してクエリを実行します。

SELECT * FROM big_pinkEnrollmentHistory ここで、Sub_Client_Cd = 'B01'およびPolicy_Holder_ID = 'BIS355702848' およびSuffix_ID = 'e'。

そして、これらは、今、私が何をしたいのか、各メンバーがアクティブであったことを確認している私の結果

CLIENT  PHID   SID   PAYORID ENROLL DATE  DISENROLL DATE 
B01  BIS355702848  e  BIS110990  2003-09-01   2010-01-31    
B01  BIS355702848  e  BIS110990  2010-02-01   2011-06-30  
B01  BIS355702848  e  BIS110990  2011-07-01   2011-09-18    
B01  BIS355702848  e  BIS110990  2011-09-19    0 

です。だから私は、これらのクレームの1つのインスタンスにそれぞれ4つずつカウントされたものを選んでください。しかし、私は最も早い入会日と最新の退会日を必要とします....私は後でこれを別のテーブルと組み合わせて、1人のメンバーあたり1ヶ月あたりのローリングコストを取得します。

答えて

0
SELECT Client, min(Enroll_date) [Registered date], 
     CASE WHEN (SELECT 1 FROM big_pink.EnrollmentHistory WHERE Disenroll_Date IS NULL) = 1 
     THEN NULL --or whatever value you wish 
     ELSE max (Disenroll_Date) 
     END [End date], COUNT(*) as n 
FROM big_pink.EnrollmentHistory 
WHERE Sub_Client_Cd = 'B01' 
AND  Policy_Holder_ID = 'BIS355702848' and Suffix_ID = 'e'; 
GROUP BY Client 

これはおおよそお探しですか?

+0

あなたはすばらしい仲間です、ありがとうございます。 – Hituptony

+0

どのように私はnullの日付を扱うだろうか? – Hituptony

+1

Welp、私は戻って来なかった。あなたが決して解決しなかった機会に私は答えの適切なケースdoodadを投げた –