2

私は、製品とその販売店を表示するプログラムを書いています。

これまでのところ、次のようにデータを表示する SQL クエリを作成できました。

Product    Availability
Milk       Store1
Candy      Store1
Eggs       Store1
Milk       Store2
Eggs       Store2
Candy      Store3
Eggs       Store3

以下に示すように、製品列で製品をグループ化し、それらを配置できる店舗を 3 つの列に展開するために使用できる SQL クエリはありますか?

Product  Store1  Store2  Store3
Milk     Yes     Yes     No
Candy    Yes     No      Yes
Eggs     Yes     Yes     Yes
4

4 に答える 4

4
SELECT 
    Product,
    MAX(CASE WHEN Availability='Store1' THEN 'Yes' ELSE 'No' END) AS Store1,
    MAX(CASE WHEN Availability='Store2' THEN 'Yes' ELSE 'No' END) AS Store2,
    MAX(CASE WHEN Availability='Store3' THEN 'Yes' ELSE 'No' END) AS Store3
FROM YourTable
GROUP BY Product
于 2010-10-12T13:57:03.387 に答える
3

非常に一般的な質問です。あなたが知る必要がある言葉はピボットです。StackOverflowで「ピボット」または「クロスタブ」を検索して、多くのディスカッションや例を見つけてください。

于 2010-10-12T13:56:35.683 に答える
3

現在、ほとんどのRDBMはピボットをサポートしています。使用しているデータベースを指定すると、非常に役立ちます。いくつかの例:MSSQLpostgres(クロス集計関数)など。

于 2010-10-12T14:01:49.977 に答える
1

クエリを実行する前に列名がわからないと仮定すると、このブログ は優れた解決策を提供します(ただし、インジェクション攻撃に注意してください)。

于 2010-10-12T14:01:32.707 に答える