[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 メーリングリストの案内