- ベストアンサー
viewにidentity列の追加
- SQLを使用して、テーブルにidentity列を追加する方法を教えてください。
- 作成したいviewは、ID、ADDRESS、出身人数の列を持ったテーブルです。
- 使用しているDBはH2です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
H2を良く知らないのですが、一般的には、group byとRownum()とを一緒に使うと うまくいかないのではなかったかと。 SELECT ROWNUM ( ) AS ID,ADDRESS,COUNT(*) AS 出身人数 FROM SAMPLE GROUP BY ADDRESS ではなく、 SELECT ROWNUM ( ) AS ID,ADDRESS,出身人数 from ( select ADDRESS,COUNT(*) AS 出身人数 FROM SAMPLE GROUP BY ADDRESS ) とするとうまくいくのでは? ANO.1の方が示しておられるURLの The first row has the row number 1, and is calculated before ordering and grouping the result set・・・ To get the row number after ordering and grouping, use a subquery. というのが、 「group byの前に連番振りますよ、但し・・・。 サブクエリを使うと、group byの後に連番を振りますよ。」(適当な意訳ですけど) つまり上記の意味です。
その他の回答 (1)
rownumとかrow_numberでなんとかなりませんかね。 http://www.h2database.com/html/functions.html#rownum
お礼
rownumを使って以下のSQL文を書いてみたのですが CREATE VIEW TESTView AS SELECT ROWNUM ( ) AS ID,ADDRESS,COUNT(*) AS 出身人数 FROM SAMPLE GROUP BY ADDRESS 以下のような結果になってしまいました。 ID ADDRESS 出身人数 7 東京 2 7 埼玉 1 7 神奈川 2 7 千葉 2 申し訳ありませんが、指摘事項がありましたらお願いします。
お礼
返事が遅くなってしまい申し訳ありません。 ご回答の通りにやってみたらできました。参考になりました。 本当にありがとうございました。