如何通过按类型或ID区分该列将一列值显示为多列

时间:2019-04-09 08:55:06

标签: mysql

我有一个名为“价格”的表。

在此表中,三种价格类型,即现金,信贷,支票价格,这些价格显示在sale_type_price列中。

我想在3个不同的列中显示这些价格,即现金价格,信贷价格和支票价格:

  item_id  |   sale_type  | price
     01    |     3        |  10
     02    |     3        |  11
     01    |     6        |  20
     01    |     7        |  30
     02    |     6        |  22  
     02    |     7        |  22 

这是我的桌子,我想要这样的结果:

  item_id  | Cash Price | credit price| check price 
     01    |   10       |      20     |     30
     02    |   11       |      22     |     22

有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

使用case when expression

select item_id, 
       max(case when sale_type=3 then price end) as CashPrice,
       max(case when sale_type=6 then price end) as creditprice,
       max(case when sale_type=7 then price end) as checkprice
from tablename
group by item_id

答案 1 :(得分:0)

您还可以使用联接来获得结果

SELECT a.item_id, a.price AS CashPrice, b.price AS CreditPrice, c.price AS CheckPrice FROM Price a
LEFT JOIN Price b ON a.item_id = b.item_id AND b.sale_type = 6
LEFT JOIN Price c ON a.item_id = c.item_id AND c.sale_type = 7
WHERE a.sale_type = 3