需要有关SQL查询的建议以返回活动策略记录

时间:2013-01-09 01:50:05

标签: sql

我需要一些关于编写查询的建议和想法,该查询返回12个月内每月有效或有效的策略计数。我可以轻松地在给定月份内构建它(参见简化示例),但希望找到一种方法来避免使用JOIN语句,这样更有效。在那里,条件是我正在努力的部分。

select 'January', count(*)
from policies
where effective_date < '1/1/2012'
and expiration_date > '2/1/2012'

建议?

3 个答案:

答案 0 :(得分:1)

使用GROUP BY汇总基于月的政策

SELECT month, count(*) FROM policies WHERE effective_date < '1/1/2012' AND expiration_date > '1/1/2013' GROUP BY month;

答案 1 :(得分:0)

select 
datename(m,p.effective_date) as mymonth,

count(*)
from policies p

where effective_date BETWEEN '1 jan 2012' AND '31 dec 2012'
and  expiration_date BETWEEN '1 jan 2012' AND '31 dec 2012'

group by datename(m,p.effective_date)

答案 2 :(得分:0)

感谢那些花时间和兴趣解决问题的人。

我想出了一个可能有效的解决方案。我编写了一个子选择语句,用于设置我需要报告的日期值(伪查询:

select add_months(trunc(sysdate),"month",-12) from dual
union
select add_months(trunc(sysdate),"month",-11) ..

依此类推),然后将其作为独立表添加到我的主要查询中,该查询使用WHERE条件和GROUP BY中的日期。像冠军一样工作。

再一次,感谢所有回应并帮助我完成不同思考过程的人。