3

レポートが必要なので、ピボット テーブルを使用する必要があります。レポートはカテゴリ別にグループ化されます。カテゴリが多いため、case when ステートメントを使用するのは適切ではありません。Northwind データベースをサンプルと考えることができ、すべてのカテゴリが列として表示されます。レポートには、カテゴリ間の顧客の好みが表示されます。私は別の解決策を知りません。Sql Server のインターネットのストアド プロシージャの例を見ました。

ありがとう

4

4 に答える 4

5

Oracle 11G を入手すると、PIVOT 機能が組み込まれています。それ以前は、CASE (または DECODE) 式の使用に制限されていました。私のブログでそれを自動化する方法に関する記事があります。

于 2008-12-14T16:40:06.207 に答える
0

SQLで行/列のスワップを行うのは面倒です。列に変換する各行は、明示的に要求する必要があります。したがって、カテゴリが多い場合、クエリは非常に長くなり、カテゴリを追加/削除/変更するたびに変更されます(これはおそらくあなたが言及しているCASEメソッドです)。そのクエリを生成する(または必要な結果セットを構築する)ストアドプロシージャを作成して生成することもできますが、正直なところ、そのように狂気(そしておそらくひどいパフォーマンス)があります。

SQLが確実にデータを提供したいように、データを行として取得し、アプリにそれを列に変換させます。これは、SQLに実行したくないことを強制するよりもはるかに簡単です。

于 2008-12-14T05:21:45.390 に答える
0

Oracle Data Cartridges(http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14289/dciwhatis.htm)を使用すると、case / whenよりも効率的にピボットテーブルを作成できますが、簡単ではないことに注意してください。もの、そして私は場所でかなりまばらなドキュメントを見つけました。

于 2008-12-14T10:15:39.010 に答える