我有一个名为“价格”的表。
在此表中,三种价格类型,即现金,信贷,支票价格,这些价格显示在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
有人可以帮我吗?
答案 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