gpt4 book ai didi

sql - 编号交叉应用行

转载 作者:行者123 更新时间:2023-12-01 11:13:21 26 4
gpt4 key购买 nike

我想对使用交叉应用创建的行进行编号。假设我有一张这样的 table

key|value
---+-----
1 | A
2 | B

然后我跑

select * from t CROSS apply String_Split('x,y', ',')

我想得到那个结果:

key|value|value|number
---+-----+-----+--------
1 | A | x | 1
1 | A | y | 2
2 | B | x | 1
2 | B | y | 2

但是我不知道如何实现它;此外,“数字”应该对订购有抵抗力。任何提示?有什么建议吗?

谢谢!

最佳答案

如果是 2016 年以上,另一个选择是使用 JSON KEY。如果需要,在 KEY 上 +1 将是一件小事

示例

Declare @YourTable Table ([id] int,[value] varchar(50))  
Insert Into @YourTable Values
(1,'A')
,(2,'B')


Select A.*
,B.*
From @YourTable
Cross Apply (
SELECT [Key]
,[value]
FROM OPENJSON('["'+replace('x,y',',','","')+'"]')
) B

返回

id  value   Key value
1 A 0 x
1 A 1 y
2 B 0 x
2 B 1 y

编辑 XML/2014 版

Select A.*
,B.*
From @YourTable A
Cross Apply (
Select RetSeq = row_number() over (order by 1/0)
,RetVal = ltrim(rtrim(B.i.value('(./text())[1]', 'varchar(max)')))
From (Select x = Cast('<x>' + replace('x,y',',','</x><x>')+'</x>' as xml)) as A
Cross Apply x.nodes('x') AS B(i)
) B

关于sql - 编号交叉应用行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56852529/

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