[pgsql-jp: 34401] Re: WHERE 句がことなるが同一 GROUP BY でくくりたい
Okumura Tomohiro
tomo_okujp @ yahoo.co.jp
2004年 12月 6日 (月) 12:27:15 JST
caseを使用したらいかがですか?
SELECT id,
sum(
case
when start_day >= '2003/3/1' then
initial_cost
end
) AS ini,
sum(rental_price)AS ren
FROM tbl
WHERE start_day <= '2004/1/1'
GROUP BY id
--- it_555_it @ excite.co.jp からのメッセージ:
> 島田と申します。
> お世話様です。
>
> SQLに関する質問です。
>
> 以下のようなテーブルがあったとします。
>
> id
> initial_cost
> rental_price
> start_day
>
> こんな感じでSQLを発行しています。
>
> SELECT id, sum(initial_cost) FROM tbl
> WHERE start_day BETWEEN '2003/3/1' AND '2004/1/1'
> GROUP BY id
>
> id | sum
> ---------+---------
> 101 | 35000
> 102 | 0
> 103 | 3210200
> 105 | 10000
> 106 | 240000
> 108 |
>
> SELECT sum(rental_price) FROM tbl
> WHERE start_day <= '2004/1/1'
> GROUP BY id
>
> id | sum
> ---------+------
> 103 | 5000
>
> WHERE句が同一であれば、
>
> SELECT id, sum(initial_cost) AS ini,
> sum(rental_price)AS ren FROM tbl
> WHERE start_day <= '2004/1/1'
> GROUP BY id
>
> と1行で書けるわけですが、
> 上記のように条件が異なる場合、
> 1回のSQLで書くことってできないんでしたっけ。
>
> id | ini | ren
> ---------+----------------------
> 101 | 35000
> 102 | 0
> 103 | 3210200 | 5000
> 105 | 10000
> 106 | 240000
> 108 |
>
> こんな風に出てくると幸せだなあ、などと。
>
> よろしくお願い致します。
>
pgsql-jp メーリングリストの案内