【发布时间】:2019-04-24 10:34:39
【问题描述】:
【问题讨论】:
-
您的预期结果是冗长的 CSV,并且是在 SQL 表中存储数据的一种相当糟糕的方式。这只是一个演示文稿,还是您打算实际存储此 CSV?
-
数据存储在SQL表中我只是使用csv提供示例数据。
标签: sql sql-server sql-server-2008 merge
【问题讨论】:
标签: sql sql-server sql-server-2008 merge
这在 SQL Server 2008 中很棘手——您应该更新您的软件!它已经到了生命的尽头。
方法使用XML:
select s.style,
stuff( (select ',' + convert(varchar(255), curr)
from (select t.*,
row_number() over (partition by t.style order by (select null)) as rowid
from t
) t cross apply
(values (GPB, 1), (EUR, 2), (USD, 3), (AUD, 4)
) v(curr, ord)
where t.style = s.style
order by rowid, ord
for xml path ('')
), 1, 1, '') as currencies
from (select distinct style from t) s;
order by 将同一行中的所有值保存在一起,并按列对值进行排序。
【讨论】:
SELECT
t1.Style,
ProductIDs = STUFF((
SELECT ', ' + t2.ProductIDs
FROM TableName t2
WHERE t1.Style= t2.Style
FOR XML PATH('')
),1, 2, '')
FROM TableName t1
GROUP BY t1.Style
【讨论】: