• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:動的に生成したカラムを使ったFUNCTION)

動的に生成したカラムを使ったFUNCTION

このQ&Aのポイント
  • 質問者は、あるテーブルの特定の項目でGROUP BYし、別の項目事に集計した結果を動的にカラムとして出力するFUNCTIONを作成したいとしています。
  • 質問者は、col1とcol2のデータが分からない場合でも、col2をDISTINCTした結果を取得し、その結果を元に動的にカラムを作成しています。
  • 質問者は、動的に生成されたSQLを実行する方法や、レコード型を使用して正しいカラム定義を行う方法について悩んでいます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>※ちなみに動的に生成されたSQLはこんな感じになります。 >SELECT col1 >,SUM( CASE WHEN col2 = 1 THEN val END ) AS col_name1 >,SUM( CASE WHEN col2 = 2 THEN val END ) AS col_name2 >FROM t1 >GROUP BY col1 >ORDER BY col1; int,int,intと3個を列として受け渡したいのだから、次のようなユーザデータ型を定義します。 CREATE TYPE test_type -- (INT,INT,INT)の3項目の受け渡し用 AS  (a INT, b INT, c INT); そして、このユーザ定義型の変数で、受け渡しができると思います。

tama2002
質問者

お礼

いまさらですが、ありがとうございました。 お礼をするのを忘れていました。。。

tama2002
質問者

補足

ありがとうございます。 今回は、受け取りたい列数が可変なのです。 SELECT DISTINCT col2 FROM t1; 上記のSQLで得られる結果を列にしたいのです。 例) 1000 2100 3500 --- 3 rows ならば、列は col_name1000, col_name2100, col_name3500としたいのです。 ※クロス集計する列を可変で行いたいと考えています ・・・やっぱりムリなんでしょうか?

関連するQ&A