SQL值从一列到多列

时间:2014-05-28 15:51:43

标签: sql join

我在加入两张桌子时遇到了麻烦。

我有这张桌子:

order   line    value
----------------------
12033   hours   0,1
12033   desc    foo
12033   letter  A
12034   hours   0,3
12034   desc    bar
12034   letter  C

现在我想将列“value”加入另一个只包含唯一订单号的表中,“line”列中的值应该成为列标题。

以下是我希望结果如何:

order   hours   desc   letter
-----------------------------
12033   0,1     foo    A
12034   0,3     bar    C

有人可以给我一些如何实现这个目标的提示吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用自我加入。这样的事情可能有用。

SELECT      a.order_number, b hours, c description, d.letter
FROM        datatable a
LEFT JOIN
(
    SELECT      order_number, value hours
    FROM        datatable
    WHERE       line = 'hours'
) b
ON b.order_number = a.order_number
LEFT JOIN
(
    SELECT      order_number, value description
    FROM        datatable
    WHERE       line = 'desc'
) c
ON c.order_number = a.order_number
LEFT JOIN
(
    SELECT      order_number, value letter
    FROM        datatable
    WHERE       line = 'letter'
) d
ON d.order_number = a.order_number

如果您确实需要加入另一个表,可以将其用作子查询。

我建议不要使用像ORDERDESC之类的字作为列名,因为如果你使用保留字作为列名而没有正确引用/转义它们,数据库引擎可能会感到困惑。