现在我的sql查询显示结果如下。 虽然这是正确的结果。
我更喜欢将结果显示如下。 我怎么能用SQL做到这一点?我在SQL Server 2008上
答案 0 :(得分:3)
我和评论者在一起,最好在其他地方这样做,但在SQL中使用CASE
语句和ROW_NUMBER()
函数很简单:
;WITH cte AS (SELECT *,ROW_NUMBER() OVER (PARTITION BY ID ORDER BY (SELECT 1)) RN
FROM YourTable)
SELECT CASE WHEN RN = 1 THEN CAST(ID AS VARCHAR(5)) ELSE '' END, Name
FROM cte
ORDER BY ID,RN
演示:SQL Fiddle
答案 1 :(得分:1)
这不是SQL的工作 无论如何,您可以使用逗号分隔值轻松显示它:
ID Names
1000 Honda, Toyota,...
1000 Honda, Toyota,...
SELECT ID, Names=
STUFF((SELECT ', ' + Name
FROM your_table b
WHERE b.ID= a.ID
FOR XML PATH('')), 1, 2, '')
FROM your_table a
GROUP BY ID