- PR -

CREATE VIEWの作成方法について

1
投稿者投稿内容
シュイ・タ
会議室デビュー日: 2005/07/26
投稿数: 3
投稿日時: 2005-07-26 18:15
シュイ・タといいます。

現在、CREATE VIEWによる集計処理をしたく、
VIEWテーブルの設計を考えているのですが、
うまく行かず、悩んでおります。
ご教授をして頂きたく、投稿させて頂きました。


CREATE VIEWさせたいテーブルの構造
CREATE TABLE "kenqt" (
"enqtid" integer NOT NULL,
"cid" integer NOT NULL,
"largeq" smallint NOT NULL,
"ansno" smallint NOT NULL,
"enq1" smallint,
"enq2" smallint,
"enq3" smallint,
Constraint "kenqt_pkey" Primary Key ("enqtid")
);

enqtid | cid | largeq | ansno | enq1 | enq2 | enq3
--------+-----+--------+-------+------+------+------
1 | 1 | 1 | 1 | 1 | 2 | 3
2 | 1 | 1 | 2 | 2 | 2 | 3
3 | 1 | 2 | 1 | 1 | 2 | 3
4 | 1 | 2 | 2 | 2 | 2 | 3
5 | 1 | 2 | 3 | 2 | 2 | 3
6 | 1 | 2 | 4 | 3 | 2 | 3
7 | 1 | 3 | 1 | 1 | 2 | 3
8 | 1 | 3 | 2 | 1 | 2 | 3
9 | 1 | 3 | 3 | 2 | 2 | 3
10 | 1 | 3 | 4 | 2 | 2 | 3
1 | 2 | 1 | 1 | 1 | 2 | 3
2 | 2 | 1 | 1 | 2 | 2 | 3

となっています。

これを

cid | largeq | enq1合計(値=1)| enq1合計(値=2)| enq1合計(値=3)| 以下略
-----+--------+----------------+----------------+----------------+
1 | 1 | 1 | 1 | 0 |
1 | 2 | 1 | 2 | 1 |
1 | 3 | 2 | 2 | 0 |
2 | 1 | 1 | 1 | 0 |

になって欲しいのですがどうしたら良いでしょうか?

PostgreSQLのリファレンス本などを読んで色々試しましたが、四苦八苦している状態です。
解る方がおりましたら、ご教授をよろしくお願い致します。
mm
会議室デビュー日: 2005/07/26
投稿数: 1
投稿日時: 2005-07-26 19:51
こんばんは。
PostgreSQLを使ったことはないのですが、
case文を用いて、下記のようなselect文ではできないでしょうか?

select cid,
     largeq,
     sum(
      case
       when enq1=1 then 1
       else 0
      end
     ) as "enq1合計(値=1)",
     sum(
      case
       when enq1=2 then 1
       else 0
      end
     ) as "enq1合計(値=2)",
     sum(
      case
       when enq1=3 then 1
       else 0
      end
     ) as "enq1合計(値=3)"
    --略--
    from kenqt
    group by cid,largeq
1

スキルアップ/キャリアアップ(JOB@IT)