例如,我得到了这样的表:
ID | GroupID | Fee | Discount
-----------------------------
1 | 20 | 60 | 15
2 | 21 | 55 | 42
我想循环每一行并获取标头-像这样的值对: 从第1行开始:GroupID-20,费用-60,折扣-15 从第2行开始:GroupID-21,费用-55,折扣-42
所以基本上,这是我的旧表,我想将其转换为新表。新的将如下所示:
ID | GroupID | Type | Value
-------------------------------
1 | 20 | Fee | 60
2 | 20 | Discount | 15
3 | 21 | Fee | 55
4 | 21 | Discount | 42
答案 0 :(得分:0)
SELECT
t.ID,
t.GroupID,
a.Type,
IF(a.Type = 'Fee', Fee, Discount) AS `Value`
FROM t
CROSS JOIN (SELECT 'Fee' AS Type UNION SELECT 'Discount') a
ORDER BY ID, GroupID;