【问题标题】:How to combine all rows into one?如何将所有行合并为一个?
【发布时间】:2021-02-07 12:19:19
【问题描述】:

例如,我有一个包含以下值的表:

DECLARE @TEMP TABLE (NUMBER INT);
DECLARE @TEXT VARCHAR(MAX)

INSERT @TEMP VALUES (1), (2), (3), (4), (5)

SELECT * FROM @TEMP
NO
1
2
3
4
5

我想要的是

NO
12345

【问题讨论】:

标签: sql-server


【解决方案1】:

如果您使用 2013 年以后的 MSSQL 版本,您可以执行以下操作:

select STRING_AGG([NO],'') from @TEMP

【讨论】:

  • STRING_AGG是在SQL Server 2017中添加的,没有2013版本。
【解决方案2】:

如果使用 COALESCE 函数也能达到同样的效果

DECLARE @TEMP TABLE (NUMBER INT);
DECLARE @TEXT VARCHAR(MAX)

INSERT @TEMP VALUES (1), (2), (3), (4), (5)


select @TEXT = COALESCE(@TEXT, '') + cast(NUMBER as nvarchar)
from @TEMP

select @TEXT

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 2020-01-17
    • 1970-01-01
    • 2021-10-13
    相关资源
    最近更新 更多