Sql server 在基于Id的Sql Server中,在单列中显示多行

Sql server 在基于Id的Sql Server中,在单列中显示多行,sql-server,Sql Server,嗨,我有一个类似于“Demo”的表,我有两列(ID,Name) 我有一张桌子: 我想得到如下表格: 如何为此编写sql查询 --TIA您必须使用group by子句和group_concat()类似: select Id, group_concat(name) as name from Demo group by Id; 在这里,group by Id将使Id基上的数据组和group_concat()函数连接名称 SELECT DISTINCT id AS uqId, (SELECT GR

嗨,我有一个类似于“Demo”的表,我有两列(ID,Name)

我有一张桌子:

我想得到如下表格:

如何为此编写sql查询


--TIA

您必须使用
group by
子句和
group_concat()
类似:

select Id, group_concat(name) as name
from Demo
group by Id;
在这里,
group by Id
将使
Id
基上的数据组和
group_concat()
函数连接名称

SELECT DISTINCT id AS uqId, (SELECT GROUP_CONCAT(name_col) FROM table WHERE id = uqId) AS NAME FROM table;

尝试此查询。这可能会对您有所帮助。

取决于服务器。Ms SQL有
stuff()/对于xml
(请参阅),mysql有,oracle有
Begin TRAN
CREATE TABLE #temp(Id INt,Event Nvarchar(25))
INSERT INTO #temp
SELECT 1,'IND'UNION ALL
SELECT 1,'USA'UNION ALL
SELECT 1,'AUS'UNION ALL
SELECT 1,'RUS'UNION ALL
SELECT 2,'DUBAI'UNION ALL
SELECT 2,'UK'UNION ALL
SELECT 3,'JAPAN'


SELECT DISTINCT ID,  STUFF(
             (   SELECT ',' + [EVENT] 
                 FROM #temp t1
                 WHERE ID = y.ID
                 FOR XML PATH (''))
             , 1, 1, '') 
FROM #temp y


ROLLBACK TRAN