【发布时间】:2017-11-28 11:53:22
【问题描述】:
【问题讨论】:
-
您使用的是什么 RDBMS?答案取决于它。
【问题讨论】:
SQL Server 提供ROW_NUMBER() 函数来实现上述功能
SELECT CASE WHEN ROW_NUMBER() OVER(PARTITION BY [column1] ORDER BY [column1]) > 1
THEN ''
ELSE CAST([column1] AS VARCHAR)
END [column1],
[column2]
FROM <table>;
编辑:使用STUFF()函数
select
[column1],
[column2] = stuff(
(select DISTINCT ' '+[column2] from <table> where [column1] = t.[column1] for xml path('')),
1,1, ''
)
from <table> t group by [column1]
结果:
column1 column2
1 Value 1 Value 2 Value 3
2 Value 4
3 Value 5 Value 6
【讨论】:
感谢@Yogesh 的帮助!!
我使用了以下查询,它对我来说工作正常,并按要求显示数据required Scenario:
Select distinct ST2.SubjectID,
substring(
(
Select CHAR(10) +ST1.StudentName AS [text()]
From dbo.Students ST1
Where ST1.SubjectID = ST2.SubjectID
ORDER BY ST1.SubjectID
For XML PATH ('')
), 2, 1000) [Students]
From dbo.Students ST2
【讨论】: