5

ここで何かをして、一種の要約データを作成しようとしています。それが最もエレガントな SQL コードになるかどうかはわかりません!

私は次の表を持っています

Product             Channel         Sold
-------------------     ----------------------  
PC                  Web             48
Laptop              Web             2
Speakers            Web             74
DVDs                Web             33
PC                  Shop            1
Laptop              Shop            1
Speakers            Shop            1
DVDs                Shop            5
PC                  Door-to-door    7
Laptop              Door-to-door    16
Speakers            Door-to-door    9
DVDs                Door-to-door    21
PC                  Referals        7
Laptop              Referals        16
Speakers            Referals        9
DVDs                Referals        21

データをクエリして、「直接」販売を表す何かを取得します。これは、Web 販売と店舗販売の合計であり、訪問販売と紹介を無視します。

Product             Channel         Sold
-------------------     ----------------------  
PC              Direct          49
Laptop          Direct          3
Speakers        Direct          75
DVDs            Direct          38

誰も私がこれを行う方法を知っていますか? Group by (select .... group by) について考えていましたが、私がしようとしているものはすべて絶望的な失敗です! 笑。

前もって感謝します。

DS

編集!

訪問訪問と紹介を「二次」としてまとめたい場合はどうすればよいですか? それは簡単に達成できますか?だから私は探しています...

Product             Channel         Sold
-------------------     ----------------------  
PC              Direct          49
Laptop          Direct          3
Speakers        Direct          75
DVDs            Direct          38
PC              Secondary       14
Laptop          Secondary       32
Speakers        Secondary       18
DVDs            Secondary       42

再度、感謝します!

DS

4

1 に答える 1

6

レコードをフィルターで除外し、各グループの列をchannel使用して集計するだけです。具体的には.SUM()Soldproduct

SELECT  Product,    
        'Direct' Channel,
        SUM(Sold) TOtalSold
FROM    TableName
WHERE   Channel IN ('Web','Shop')
GROUP   BY Product

アップデート

SELECT  Product,    
        CASE    WHEN Channel IN ('Web','Shop') 
                THEN 'Direct'
                ELSE 'Secondary'
        END Channel,
        SUM(Sold) TOtalSold
FROM    TableName
GROUP   BY Product,
        CASE    WHEN Channel IN ('Web','Shop') 
                THEN 'Direct'
                ELSE 'Secondary'
        END 
ORDER   BY Channel

出力

╔══════════╦═══════════╦═══════════╗
║ PRODUCT  ║  CHANNEL  ║ TOTALSOLD ║
╠══════════╬═══════════╬═══════════╣
║ Laptop   ║ Direct    ║         3 ║
║ Speakers ║ Direct    ║        75 ║
║ DVDs     ║ Direct    ║        38 ║
║ PC       ║ Direct    ║        49 ║
║ Laptop   ║ Secondary ║        32 ║
║ Speakers ║ Secondary ║        18 ║
║ DVDs     ║ Secondary ║        42 ║
║ PC       ║ Secondary ║        14 ║
╚══════════╩═══════════╩═══════════╝
于 2013-06-03T14:17:00.133 に答える