将mysql数据库值从几列转换为条目行

时间:2010-10-27 15:56:49

标签: sql mysql pivot

通过显示现有数据结构和所需结果的简化视图,更容易描述......


目前...

Element       Response           ElementType    ElementNumber

EntryVal.1    1234.56            EntryVal       1
EntryDes.1    'Current Value'    EntryDes       1

EntryVal.2    4321.0             EntryVal       2
EntryDes.2    'Another Value'    EntryDes       2

EntryVal.3    6543.21            EntryVal       3
EntryDes.3    'Final Value'      EntryDes       3

... DESIRED

Name           Value

Current Value  1234.56
Another Value  4321.0
Final Value    6543.21

(将元素列拆分为ElementType和ElementNumber列中的希望 它可能有帮助)

尝试了各种子选择,但没有找到秘密。

可以在PHP中进行一些循环,但希望有一种更优雅的单一MySQL查询方法。

还有其他列,如位置,所以试图保持清洁。

2 个答案:

答案 0 :(得分:2)

我是这样做的:

SELECT des.Response AS Name, val.Response AS Value
FROM MyTable AS des JOIN MyTable AS val USING (ElementNumber)
WHERE des.ElementType = 'EntryDes' AND val.ElementType = 'EntryVal';

答案 1 :(得分:1)

使用:

  SELECT MAX(CASE WHEN t.elementtype = 'EntryDes' THEN t.response END) AS Name,
         MAX(CASE WHEN t.elementtype = 'EntryVal' THEN t.response END) AS Value,
    FROM YOUR_TABLE t
GROUP BY t.elementnumber

您可能希望将elementnumber保留为列,以防您需要确保订单。