我想知道是否可以在SQLite中使用SELECT语句将两行中的数据合并为一个,类似于下面的SQL Server论坛中的建议。
考虑下面的场景,该场景基于SQL Server(取自http://forums.aspfree.com/microsoft-sql-server-14/merge-the-two-rows-in-one-row-245550.html)
鉴于有一张表
ID |姓名|
1 | x |
1 | P |
2 | y |
2 | Q |
3 | W |
我们希望select语句中的结果数据输出:
Id |名字-1 |名字-2 |
1 | x | P |
2 | y | Q |
3 | w | |
帖子中的答案表明以下SQL是一种可能的解决方案:
SELECT
a.ID,
[Name-1] = ISNULL((
SELECT TOP 1 Name
FROM emp
WHERE ID = a.ID),''),
[Name-2] = ISNULL((
SELECT TOP 1 b.Name
FROM emp b
WHERE b.ID = a.ID
AND Name NOT IN(
SELECT TOP 1 Name
FROM emp
WHERE ID = b.ID
)),'')
FROM emp a
GROUP BY a.ID
使用SQLite可以生成列[Name-1]& [Name-2]使用嵌套的SELECT语句,就像我们在SQL Server中可以做的那样?
答案 0 :(得分:6)
SELECT
a.ID,
COALESCE(a.Name,'') as "Name-1",
COALESCE((SELECT b.Name FROM Emp b
WHERE b.ID = a.ID
AND b.rowid != a.rowid LIMIT 1),'') as "Name-2"
FROM emp a
GROUP BY a.ID
答案 1 :(得分:1)
试试这个:::
通过id从emp组中选择id,group_concat(name);
)
答案 2 :(得分:1)
SELECT
a.ID,
a.Name AS Name1,
(SELECT b.Name FROM Emp b
WHERE b.ID = a.ID
AND b.Name != a.Name LIMIT 1) AS Name2
FROM emp a
GROUP BY a.ID