2012-03-09 11 views
0

は、だから私は、私が入学の歴史に対処する必要がレコードを埋めるために必要な一時テーブルを持ってnull値mysqlのではない、私はこのようになりますデータセットで作業日付が返さヌルと

sccphidsid enroll_date disenroll_date status 
abc123x  2009-01-01 2010-31-12   0 
abc123x  2011-01-01 null     0 
abc123x  2011-03-01 2012-01-01   0 

したがって、同じsccphidsidを持つすべてのレコードを戻し、null値とNULL値以外の値を返す必要があります。

それが満たさなければならない条件が

  • Disenroll日は
  • Disenroll日付がnull nullではないですし、
  • レコードは、複数のdisenroll_dates

現在のソリューションがあります。

select *, count(disenroll_date is null) 
       from enrollment _test 
       where Status = 0 
       group by Sub_Client_Cd, Policy_Holder_ID, Suffix_ID 
       having count(disenroll_date is null) > 1; 

これはあまりにも多くのレコードを返していますが、制約やパラメータによってレコードが多すぎることを防ぐために、このクエリを分離する方法がありますか?すべて

+0

条件は「日付* Disenrollは* nullではない」と「日付が* Disenrollヌルです*」私は日付をdisenrollするために言及していた –

+0

がnullとdisenroll_dateがある場合..です有効であると思われません有効な日付ではなく、nullでない... "not null"ではありません。 – Hituptony

答えて

1
SELECT Sub_Client_Cd, Policy_Holder_ID, Suffix_ID, 
     SUM(CASE WHEN disenroll_date IS NULL THEN 1 ELSE 0 END) AS NullDateCount, 
     SUM(CASE WHEN disenroll_date IS NOT NULL THEN 1 ELSE 0 END) AS NotNullDateCount 
    FROM enrollment_test 
    WHERE Status = 0 
    GROUP BY Sub_Client_Cd, Policy_Holder_ID, Suffix_ID 
    HAVING COUNT(*) > 1; 
1

は実はこれが感謝とにかく...それの世話をした

感謝。

select *, count(disenroll_date is null) from enrollment_test 
where Status = 0 
and disenroll_date is null 
group by Sub_Client_Cd, Policy_Holder_ID, Suffix_ID    
having count(disenroll_date is null) > 1; 
関連する問題