0

次のように構成された(簡略化された)テーブルがあります。

Table: ItemData

PK | ScanCode | StoreFK | Retail | ReceiptAlias
1  | 100101   | 1       | 4.99   | Milk
4  | 100101   | 2       | 4.99   | Milk
7  | 100101   | 3       | 0.99   | Milk
2  | 100102   | 1       | 6.99   | Eggs
5  | 100102   | 2       | 6.99   | Eggs
8  | 100102   | 3       | 6.99   | Eggs
3  | 100103   | 1       | 7.99   | Bread
6  | 100103   | 2       | 8.99   | Bread
9  | 100103   | 3       | 9.99   | Bread

次のSQLクエリを使用して、次の戻り結果を取得できます。これには、1つ以上の店舗で小売店が異なるすべてのアイテムが表示されます。以前に尋ねた質問を参照してください。

SQLクエリ:

SELECT   im.INV_ScanCode     AS ScanCode,
         name.ItemData AS im
GROUP BY ScanCode, Receipt_Alias
HAVING   COUNT(DISTINCT im.Retail) > 1
ORDER BY ScanCode

現在の返品結果:

ScanCode | Receipt_Alias 
100101   | Milk
100103   | Bread

1つ以上の店舗で小売店が異なるすべての商品と各店舗の場所で小売店を返品したいと思います。

望ましい返品結果:

ScanCode | Receipt_Alias | Str_1 | Str_2 | Str_3
100101   | Milk          | 4.99  | 4.99  | 0.99
100103   | Bread         | 7.99  | 8.99  | 9.99

SQLクエリを変更して、各店舗の場所の小売店を含めるにはどうすればよいですか?

4

1 に答える 1

2
SELECT  ScanCode as ItemID,
        ReceiptAlias,
        MAX(CASE WHEN StoreFK = 1 THEN Retail ELSE NULL END) Store_1,
        MAX(CASE WHEN StoreFK = 2 THEN Retail ELSE NULL END) Store_2,
        MAX(CASE WHEN StoreFK = 3 THEN Retail ELSE NULL END) Store_3
FROM    ItemData
GROUP   BY ScanCode, ReceiptAlias
HAVING  COUNT(DISTINCT Retail) > 1
于 2013-01-19T17:14:42.480 に答える