2017-10-11 93 views
0

我有以下代碼:SQL - 在同一個表中乘值

SELECT ConsumerID, Product, 
 
     (frequency * Product_Value) as Value_productA 
 
     (frequency * Product_Value) as Value_productB 
 
     (frequency * Product_Value) as value_productC 
 
From Table1

的table1的樣子說:

ConsumerID | Product | Product_value | frequency | value_productA | value_productB | value_productC 
 
----------------------------------------------------------------- 
 
001 | productA | 5$ | 2 | | | | 
 
001 | productB | 7$ | 4 | | | | 
 
001 | productC | 9$ | 6 | | | | 
 
002 | productA | 5$ | 2 | | | | 
 
002 | productB | 7$ | 4 | | | | 
 
002 | productC | 9$ | 6 | | | | 
 

 

 
Expected Bevaviour: 
 

 
ConsumerID | Product | Product_value | frequency | value_productA | value_productB | value_productC 
 
----------------------------------------------------------------- 
 
001 | productA | 5$ | 2 |10$ | | | 
 
001 | productB | 7$ | 4 | |28$ | | 
 
001 | productC | 9$ | 6 | | |54$ | 
 
002 | productA | 5$ | 2 | 10$| | | 
 
002 | productB | 7$ | 4 | |28$ | | 
 
002 | productC | 9$ | 6 | | |54$ | 
 

 

 
Current behaviour: 
 

 
ConsumerID | Product | Product_value | frequency | value_productA | value_productB | value_productC 
 
----------------------------------------------------------------- 
 
001 | productA | 5$ | 2 |10$ |10$ |10$ | 
 
001 | productB | 7$ | 4 |28$ |28$ |28$ | 
 
001 | productC | 9$ | 6 |54$ |54$ |54$ | 
 
002 | productA | 5$ | 2 |10$ |10$ |10$ | 
 
002 | productB | 7$ | 4 |28$ |28$ |28$ | 
 
002 | productC | 9$ | 6 |54$ |54$ |54$ |

的想法是計算t他爲每個客戶端產品&產品 - 含義頻率* product_value。示例代碼正確計算SUM,但將其寫入每個字符而不是僅寫入value_productX字段。

回答

0

你需要一些條件邏輯,如case

SELECT ConsumerID, Product, 
     (case when product = 'productA' then (frequency * Product_Value) end) as Value_productA 
     (case when product = 'productB' then (frequency * Product_Value) end) as Value_productB 
     (case when product = 'productC' then (frequency * Product_Value) end) as value_productC 
From Table1; 

通常,當類似的問題是問,我們的目標是每consumerid得到一行。如果是這樣的話,你想要聚合:

select ConsumerID, 
     sum(case when product = 'productA' then (frequency * Product_Value) end) as Value_productA 
     sum(case when product = 'productB' then (frequency * Product_Value) end) as Value_productB 
     sum(case when product = 'productC' then (frequency * Product_Value) end) as value_productC 
From Table1 
group by ConsumerID 
+0

偉大的,工作和解決了這個問題!再次感謝你 – Christian

相關問題