レポートが必要なので、ピボット テーブルを使用する必要があります。レポートはカテゴリ別にグループ化されます。カテゴリが多いため、case when ステートメントを使用するのは適切ではありません。Northwind データベースをサンプルと考えることができ、すべてのカテゴリが列として表示されます。レポートには、カテゴリ間の顧客の好みが表示されます。私は別の解決策を知りません。Sql Server のインターネットのストアド プロシージャの例を見ました。
ありがとう
Oracle 11G を入手すると、PIVOT 機能が組み込まれています。それ以前は、CASE (または DECODE) 式の使用に制限されていました。私のブログでそれを自動化する方法に関する記事があります。
SQLで行/列のスワップを行うのは面倒です。列に変換する各行は、明示的に要求する必要があります。したがって、カテゴリが多い場合、クエリは非常に長くなり、カテゴリを追加/削除/変更するたびに変更されます(これはおそらくあなたが言及しているCASEメソッドです)。そのクエリを生成する(または必要な結果セットを構築する)ストアドプロシージャを作成して生成することもできますが、正直なところ、そのように狂気(そしておそらくひどいパフォーマンス)があります。
SQLが確実にデータを提供したいように、データを行として取得し、アプリにそれを列に変換させます。これは、SQLに実行したくないことを強制するよりもはるかに簡単です。
Oracle Data Cartridges(http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14289/dciwhatis.htm)を使用すると、case / whenよりも効率的にピボットテーブルを作成できますが、簡単ではないことに注意してください。もの、そして私は場所でかなりまばらなドキュメントを見つけました。