【发布时间】:2015-01-22 21:33:53
【问题描述】:
我有一个接受逗号分隔列表的存储过程,然后使用带引号的字符串和括号制作该列表的副本,然后在动态 sql 语句中使用它们来构建具有灵活列数的数据透视表。
我的问题是,有时我的用户会提交包含重复项的列表,这会导致数据透视查询失败。所以我想以某种方式选择与我的逗号分隔的字符串不同的选项。
我是这样操作初始字符串的:
Declare @data varchar(max) = '150593, 150593, 150603, 150578, 150604'
Declare @bracketed varchar(max) = ''
Declare @quoted varchar(max) = ''
select @bracketed = @bracketed + quotename(rtrim(ltrim(Value))) + ', ',
@quoted = @quoted + quotename(rtrim(ltrim(Value)), '''') + ', '
from [dbo].[fnSplitStringAsTable](@data, ',')
Select @bracketed = LEFT(@bracketed, len(@bracketed) - 1),
@quoted = LEFT(@quoted, len(@quoted) - 1)
我想我应该能够在此查询中的某处添加 DISTINCT,
但我不能让它工作。如何从逗号分隔的列表中选择不同的列表?
【问题讨论】:
-
@AaronBertrand - 你怎么记得 3 年前的答案...我不记得我上周说了什么。
-
@AaronBertrand - 虽然我同意你的记忆力令人印象深刻,但你能告诉我那篇文章的哪一部分是相关的吗?我没看到...
-
抱歉,我以为您正在尝试创建分组连接列表。有关删除重复项的功能,请参阅this。我怀疑它比您当前的功能更有效。
标签: sql sql-server csv pivot