Sql 将不同行中的数据合并到不同列中
我有一张桌子(T) 并希望合并/加入他们以获得此Sql 将不同行中的数据合并到不同列中,sql,Sql,我有一张桌子(T) 并希望合并/加入他们以获得此 User | Language_1 | Language_2 -------------------------------- 1 |string | otherString 我试过这样的东西 SELECT USER, (CASE WHEN Language = 1 THEN Value END) AS language_1, (CASE WHEN Language
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
但是我得到了这样的结果(我应该预料到这一点)
正确的方法是什么?您只需要一个聚合
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
这是用于哪个RDBMS的?请添加一个标记,以指定您使用的是
mysql
、postgresql
、sql server
、oracle
还是db2
-或其他完全不同的名称。您确实应该避免使用保留字作为对象或列名。用户和语言都是保留字。@SeanLange确实没有考虑过,我下班回家后会给它编辑一下
User | Language_1 | Language_2
--------------------------------
1 |string | NULL
1 |NULL | otherString
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