Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将不同行中的数据合并到不同列中_Sql - Fatal编程技术网

Sql 将不同行中的数据合并到不同列中

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

我有一张桌子(T)

并希望合并/加入他们以获得此

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