【问题标题】:How to achieve string_agg function in azure data warehouseazure数据仓库中如何实现string_agg功能
【发布时间】:2019-04-05 14:31:59
【问题描述】:

我在一些查询中使用 string_agg 函数试图将其转换为 azure sql 数据仓库。我怎样才能实现这一点? 有人可以帮我解决这个问题吗?

【问题讨论】:

标签: sql-server azure azure-sql-data-warehouse


【解决方案1】:

自 7 月发布的 Azure 数据仓库起,实施了 STRING_AGG。

https://docs.microsoft.com/en-us/azure/sql-data-warehouse/release-notes-10-0-10106-0

【讨论】:

    【解决方案2】:

    Azure 数据仓库不支持 string_agg。 https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-2017。 你可以使用https://docs.microsoft.com/en-us/sql/t-sql/language-elements/coalesce-transact-sql?view=sql-server-2017

    通过使用:COALESCE

    DECLARE @Names VARCHAR(8000) SELECT @Names = COALESCE(@Names + ', ', '') + ColumnName FROM TABLE_NAME Select @Names

    【讨论】:

    • COALESCE 如何创建分隔列表? COALESCECASE 表达式的简写。
    • @Larnu 看到这个:(stackoverflow.com/questions/194852/…)
    • 我的意思是向 OP 解释,哈桑。这确实可以正常工作,直到 OP 每行都需要这个。
    • 感谢@hasan Mahmood 和 Larnu 的回复。如果我有多行,那么如何将它们作为逗号分隔值。你能帮我解决这个问题吗?提前致谢
    • @Hasan Mahmood 。我已经尝试过您之前提到的代码,但出现以下错误(在 SELECT 语句中分配的变量不能包含在表达式或分配中与 from 子句一起使用。)声明 atNumbers AS Nvarchar(MAX) SELECT atNumbers = COALESCE(atNumbers + ',', '') + A FROM [dbo].[TEST1] SELECT atNumbers 注意:at=@
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 2021-01-03
    • 2016-05-21
    • 2017-01-04
    • 2019-07-28
    相关资源
    最近更新 更多