LOGIC ON MySQL,DATE RANGES,将项目插入空字段

时间:2012-02-08 16:54:08

标签: mysql logic date

好的,所以从选择日期范围开始,我有一个关于如何应该出现的逻辑的问题。 我必须检查enrollmenthistory表的所有成员是否在某个月内处于活动状态。我必须处理的字段是subclientcodepolicyholderidsuffixid

然后我注册了日期和退出日期 所以我的字段看起来像这样

client phid sid enroll date disenroll date

我要检查的第一件事是确保该组有活跃成员(scc + phid + sid)

我想按月分解。所以我会用date_format(enroll_date '%Y %m)来隔离年份和日期。

这样的事可能

SELECT sub client code, phid, sid, date_formate(enroll date '%Y %m'), 
date_formate(disenroll date '%Y %m')
FROM enrollmenthistory
WHERE sub client code = 'B01' and enroll_date is < 2010-02-01 and 
disenroll_date is null or disenroll_date > 2010-01-01

如果有人可以帮助我使用这种语法,我会使用mySQL 5.5,也许我的逻辑也是错误的。

我必须考虑到有一个月的活跃会员,但可能在下个月没有活动,并且可能在下个月再次活跃。就像工会会员的保险一样。 或者该成员可能只在一个月的时间内有效。

任何需要澄清的帮助或问题将不胜感激。

提前致谢。

还要保持心情

之前我使用过此查询,但由于我需要记住的特定日期范围,min和max不会工作。

SELECT  sub_client_cd, min( Enroll_date), max(Disenroll_Date), COUNT(*) as n 
FROM    big_pink.enrollment_test 
WHERE   Sub_Client_Cd = 'B01'  
AND     Policy_Holder_ID = 'BIS355702848' and Suffix_ID = 'e'
GROUP BY sub_client_cd;

这有效,但我需要更具体......

这是我最新的代码......

SELECT  sub_client_cd,  Enroll_date, Disenroll_Date, COUNT(*) as n 
FROM    big_pink.enrollment_test 
WHERE  Enroll_date < '2010-02-01' and  (Disenroll_date is null or  disenroll_date > '2010-01-01')
GROUP BY sub_client_cd;

如何使用SQL循环它,或者将它放在Python脚本中会更容易吗?

0 个答案:

没有答案