gpt4 book ai didi

sql - 如何在 SQL Server 中获取此列结果

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

希望尝试在 SQL Server 中返回以下数据集。我有 2 列 TrailerPosition & Divider 并希望返回 Zone。区域将从区域 1 开始计算,然后在分隔符 = 1 后更改为记录上的区域 2。然后在分隔符 = 1 的下一条记录之后更改为 3。下面的屏幕截图看起来像我要返回的列.

有什么想法可以在 SQL Server 中完成吗?

以下测试数据:

declare @t table (TrailerPosition nvarchar(5),Divider bit);
insert into @t values ('01L',0),('01R',0),('02L',0),('02R',1),('03L',1),('03R',0),('04L',0),('04R',0),('05L',1),('05R',1),('06L',0),('06R',0),('07L',0),('07R',0),('08L',0),('08R',0),('09L',0),('09R',0),('10L',0),('10R',0),('11L',0),('11R',0),('12L',0),('12R',0),('13L',0),('13R',0),('14L',0),('14R',0),('15L',0),('15R',0);

enter image description here

最佳答案

如果是 2012+,窗口函数会很适合这里

Select TrailerPosition
,Divider
,Zone = 1+sum(Flag) over (Order By TrailerPosition)
From (
Select *
,Flag = case when Lag(Divider,1) over (Order By TrailerPosition) =1 and Divider=0 then 1 else 0 end
From YourTable
) A

返回

enter image description here

关于sql - 如何在 SQL Server 中获取此列结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44073182/

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