我想用逗号分隔组合值。对于使用stuff
.
但是我的数据有重复的值,我只需要其中的唯一项。
这是我正在使用的查询。
SELECT STUFF
(
RTRIM
(
( SELECT N', ' + CAST(column1Name AS varchar(MAX))
FROM dbo.tableName
ORDER BY column2Name
FOR XML PATH (N'')
)
)
, 1, 2, N'')
我SELECT DISTINCT
在 STFF 中尝试过,但这需要一个用于在 SELECT 子句中排序的列,我使用的是 STUFF 所以我不能在 SELECT 子句中使用该列。
SELECT STUFF
(
RTRIM
(
( SELECT DISTINCT N', ' + CAST(column1Name AS varchar(MAX))
FROM dbo.tableName
ORDER BY column2Name
FOR XML PATH (N'')
)
)
, 1, 2, N'')
我也尝试使用sub-query
做排序和使用不同的外部,但这也给出了编译错误。
SELECT STUFF
(
RTRIM
(
( SELECT DISTINCT N', ' + CAST(column1Name AS varchar(MAX))
FROM
(
SELECT column1Name
FROM dbo.tableName
ORDER BY column2Name
) tableAlias
FOR XML PATH (N'')
)
)
, 1, 2, N'')
我也试过GROUP BY
,这也迫使我在 SELECT 子句中添加 column2Name。
SELECT STUFF
(
RTRIM
(
( SELECT N', ' + CAST(column1Name AS varchar(MAX))
FROM dbo.tableName
GROUP BY column1Name
ORDER BY column2Name
FOR XML PATH (N'')
)
)
, 1, 2, N'')
有没有办法填充唯一值以及基于不同列的排序?
您仍然可以使用该GROUP BY
方法。唯一的事情是当你GROUP BY column1Name
,可能有多个值column2Name
,所以你需要在它上面使用聚合,例如MIN(column2Name)
SELECT STUFF
(
RTRIM
(
( SELECT N', ' + CAST(column1Name AS varchar(MAX))
FROM dbo.tableName
GROUP BY column1Name
ORDER BY MIN(column2Name)
FOR XML PATH (N'')
)
)
, 1, 2, N'')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句