sql-server - 我可以对 sql 中的串联结果进行排序吗?

标签 sql-server t-sql sql-server-2008 ssis concatenation

SQL Server 2008 - 我想将四列连接成分隔值,但我希望它们按字母顺序排序。这可能吗?

**更新:**更多信息...这将通过 SSIS 在 ETL 作业中每天用于大约 700k-1M 行。如果在 SSIS 中有更简单的方法,请告诉我(脚本任务等)。它也可以在存储过程中完成。

另请记住,这些可以为 NULL - 这会导致其中一些解决方案出现一些问题。

最佳答案

Unpivot将列转换为行,然后对行进行排序。使用任何row string concatenation technique你喜欢的,比如 FOR XML 技巧:

with cte as (
select *
from (values ('A' ,'C', 'B' ,'D')) as T (c1, c2, c3, c4))
select Value + ',' as [*]
from cte
unpivot (Value for c in (c1, c2, c3, c4)) as u
order by Value
for xml path('')

关于sql-server - 我可以对 sql 中的串联结果进行排序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3215885/

相关文章:

sql-server - 选择具有特定模式的查询,在第一个位置显示特定记录

c# - 如何从 Windows 应用程序调用 SQL Server 代理中的作业

sql-server - 如何使用 T-SQL 删除列中不需要的子字符串

sql-server-2008 - 如何解决 Microsoft SQL 对 AppHarbor 地理类型的依赖

sql - 生成下一个主键值

sql-server - XQuery T-​​sql 将节点插入到所有元素中

database - 为什么不能以这种方式将图像保存到数据库?

r - 如何在 dbplyr 中使用 R 代码创建自定义 SQL 函数?

sql - BCP错误: columns may be skipped only when copying into the Server

mysql - 从另一行中减去一行