1

12 か月間、毎月有効または有効なポリシーの数を返すクエリを作成するためのアドバイスとアイデアが必要です。特定の月に簡単に作成できますが (簡略化された例を参照)、JOIN ステートメントの使用を避ける方法、より効率的な方法を見つけたいと考えていました。WHERE条件は私が苦労している部分です。

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

提案?

4

3 に答える 3

1

GROUP BYを使用して、月に基づいてポリシーを集計します

SELECT month, count(*) FROM policies WHERE effective_date < '1/1/2012' AND expiration_date > '1/1/2013' GROUP BY month;
于 2013-01-09T01:56:11.683 に答える
0

私の問題に時間を割いて関心を持ってくださった方々に感謝します。

おそらく可能な限り効率的なソリューションを思いつきました。レポートする必要がある日付値を設定する sub-select ステートメントを作成しました (疑似クエリ:

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

など)、それをスタンドアロン テーブルとしてプライマリ クエリに追加し、WHERE条件とGROUP BY. チャンピオンのように働きました。

繰り返しになりますが、回答してくださったすべての人に感謝し、さまざまな思考プロセスを進めるのを助けてくれました。

于 2013-01-10T03:53:17.647 に答える
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)
于 2013-01-09T02:08:03.330 に答える