我在加入两张桌子时遇到了麻烦。
我有这张桌子:
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
有人可以给我一些如何实现这个目标的提示吗?
谢谢!
答案 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
如果您确实需要加入另一个表,可以将其用作子查询。
我建议不要使用像ORDER
和DESC
之类的字作为列名,因为如果你使用保留字作为列名而没有正确引用/转义它们,数据库引擎可能会感到困惑。