Даты возвращают нулевые и ненулевые значения mysql - PullRequest
0 голосов
/ 10 марта 2012

Итак, у меня есть временная таблица, которую мне нужно заполнить записями, имеющими дело с историей регистрации

Я работаю с набором данных, который выглядит следующим образом:

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 и возвращал их, включая нулевые и ненулевые значения.

Условия, которым он должен соответствовать,

  • Даты прекращения участия не равны нулю
  • Даты прекращения участия равны нулю, а
  • записи имеют несколько значений disenroll_date

Текущее решение:

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;

Однако это возвращает слишком много записейЕсть ли способ изолировать этот запрос, может быть, проще, который может предотвратить возвращение слишком большого количества записей по ограничениям или параметрам?

Спасибо всем

Ответы [ 2 ]

1 голос
/ 14 марта 2012

На самом деле об этом позаботились ... В любом случае, спасибо.

 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; 
1 голос
/ 10 марта 2012
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;
...