2016-07-18 53 views
0

選擇在表中的值有一個表table1我如何在此格式

Item_Name  | Type  | Qty | Amount 

    A    Like   2  10 
    B    Love   1  20 
    C    Ours   1  10 
    A    Love   1  10 
    A    Like   1  10 
    B    Ours   1  10 

我需要一個O/P如下

Item_Name   Like | Love | Ours  Like | Love | Ours 
          Amount     Qty 

    A     20  10  0   3  1  0 
    B     0  20  10   0  1  1 
    C     0  0  10   0  0  1 

我怎樣才能達到預期的O/P。我無法做到這一點。請幫助

回答

3

一種方法是使用分組和有條件的聚集得到你所需要的輸出:

SELECT Item_Name, 
    SUM(Case WHEN Type='Like' THEN Amount ELSE 0 END) AS Like_Amount, 
    SUM(Case WHEN Type='Love' THEN Amount ELSE 0 END) AS Love_Amount, 
    SUM(Case WHEN Type='Ours' THEN Amount ELSE 0 END) AS Ours_Amount, 
    SUM(Case WHEN Type='Like' THEN Qty ELSE 0 END) AS Like_Qty, 
    SUM(Case WHEN Type='Love' THEN Qty ELSE 0 END) AS Love_Qty, 
    SUM(Case WHEN Type='Ours' THEN Qty ELSE 0 END) AS Ours_Qty 
FROM table1 
GROUP BY Item_Name 
ORDER BY Item_Name 

上面的查詢工作,如果可能的值在Type列的列表是固定的。如果這些值可能發生變化,您需要使用其他方法(例如PIVOT

+0

我認爲您需要確認'Type'是靜態的還是動態的?如果動態,那麼您的給定解決方案將無法工作 –

+0

@MhhirShah謝謝,我添加了解釋我的回答 – dotnetom

+0

@dotnetom感謝您的答覆。我會嘗試相同的。也有可能給一個與樞軸Soln也? – Sachu