gpt4 book ai didi

sql - 在 string_agg 中排序似乎不起作用

转载 作者:行者123 更新时间:2023-12-01 09:07:00 25 4
gpt4 key购买 nike

我有一个像这样的表#tmp:

recid       DefaultDimension    DefaultDimensionName    line_no
5637423499 Default Employee 7
5637423499 1001 Product 8
5637423499 100 Region 2
5637423499 1 Routing 17
5637423499 115 Section 5
5637423499 999 Unit 6
5637423499 1510 Branch 3
5637423499 A CabinClass 14
5637423499 0B Carrier_Property 9
5637423499 103 Channel 16
5637423499 104 Department 4
5637423499 113 Division_CustomerType 1

我想根据 line_no 的升序连接 DefaultDimension 和 DefaultDimensionName 列

这是我写的查询,但我没有按顺序得到它:

select recid, 
STRING_AGG(DefaultDimension, '-') WITHIN GROUP (ORDER BY line_no ASC) DefaultDimension,
STRING_AGG(DefaultDimensionName, '-') WITHIN GROUP (ORDER BY line_no ASC) DefaultDimensionName
from #tmp
group by recid

结果:

recid       DefaultDimension                                    DefaultDimensionName
5637423499 113-A-103-1-100-1510-104-115-999-Default-1001-0B Division_CustomerType-CabinClass-Channel-Routing-Region-Branch-Department-Section-Unit-Employee-Product-Carrier_Property

如您所见,CabinClass 应该排在倒数第 3 位,但它排在了第 2 位。

最佳答案

您的line_novarchar,您通常会注意到

'1' < '14' < '16 < '17' < '2'

所以,只要简单地将varchar解析成int就可以解决问题。

select recid, 
STRING_AGG(DefaultDimension, '-') WITHIN GROUP (ORDER BY CAST(line_no AS int) ASC) DefaultDimension,
STRING_AGG(DefaultDimensionName, '-') WITHIN GROUP (ORDER BY CAST(line_no AS int)ASC) DefaultDimensionName
from #tmp
group by recid

关于sql - 在 string_agg 中排序似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51704734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com