【问题标题】:Merge data from different rows to different columns [duplicate]将不同行的数据合并到不同的列[重复]
【发布时间】:2016-01-21 19:25:52
【问题描述】:

我有一张桌子(T)

User | Language | Value
-----------------------
1    |1         | string
1    |2         | otherString

并想合并/加入他们以获得这个

User | Language_1 | Language_2
--------------------------------
1    |string      | otherString

我试过这样的

SELECT       USER,
             (CASE WHEN Language = 1 THEN Value END) AS language_1,
             (CASE WHEN Language = 2 THEN Value END) AS language_2
FROM         T

但是我得到了这样的结果(我应该预料到的)

User | Language_1 | Language_2
--------------------------------
1    |string      | NULL
1    |NULL        | otherString

正确的做法是什么?

【问题讨论】:

  • 这适用于哪个 RDBMS?请添加标签以指定您使用的是mysqlpostgresqlsql-serveroracle 还是db2 - 或其他完全不同的东西。
  • 您确实应该避免使用保留字作为对象或列名。 USER 和 Language 都是保留字。
  • @SeanLange 确实没有考虑过,我下班回家后会对其进行编辑

标签: sql


【解决方案1】:

你只需要一个聚合

SELECT USER,
         MAX(CASE WHEN Language = 1 THEN Value END) AS language_1,
         MAX(CASE WHEN Language = 2 THEN Value END) AS language_2
FROM  T
GROUP BY USER

【讨论】:

    猜你喜欢
    • 2011-12-15
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2016-05-14
    • 2019-07-04
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多