【问题标题】:SQL values from one column to multiple columns从一列到多列的 SQL 值
【发布时间】:2014-05-28 15:51:42
【问题描述】:

我在连接两个表时遇到问题。

我有这张桌子:

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

现在我想将“值”列与另一个只有唯一订单号的表连接起来,“行”列中的值应该成为列标题。

这是我想要的结果:

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

有人能给我一些关于如何实现这一目标的提示吗?

谢谢!

【问题讨论】:

标签: sql join


【解决方案1】:

您可以使用自联接。这样的事情可能会奏效。

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 这样的词作为列名,因为如果您使用保留词作为列名而不正确地引用/转义它们,数据库引擎可能会感到困惑。

【讨论】:

    猜你喜欢
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    相关资源
    最近更新 更多