当前位置:Gxlcms > 数据库问题 > SQL - 获取多机构最近相同节点

SQL - 获取多机构最近相同节点

时间:2021-07-01 10:21:17 帮助过:3人阅读

Create Branches Table create table Branches ( BranchCode varchar(16) ,BranchName nvarchar(32) ,L0BCode varchar(16) ,L1BCode varchar(16) ,L2BCode varchar(16) ,L3BCode varchar(16) ,L4BCode varchar(16) ,L5BCode varchar(16) ,L6BCode varchar(16) ,L7BCode varchar(16) ) go ------------------------------------------------------------------------------------------- declare @branches varchar(512) = 02078,31696,90100 ,@count int ,@branchcode varchar(16) select @count = COUNT(*) from string_split(@branches,,) ;with t1 as ( select b.L0BCode,b.L1BCode,b.L2BCode,b.L3BCode,b.L4BCode,b.L5BCode,b.L6BCode,b.L7BCode ,iif(isnull(b.L0BCode,‘‘) = ‘‘,@count,dense_rank()over(order by b.L0BCode )) as L0Rank ,iif(isnull(b.L1BCode,‘‘) = ‘‘,@count,dense_rank()over(order by b.L1BCode )) as L1Rank ,iif(isnull(b.L2BCode,‘‘) = ‘‘,@count,dense_rank()over(order by b.L2BCode )) as L2Rank ,iif(isnull(b.L3BCode,‘‘) = ‘‘,@count,dense_rank()over(order by b.L3BCode )) as L3Rank ,iif(isnull(b.L4BCode,‘‘) = ‘‘,@count,dense_rank()over(order by b.L4BCode )) as L4Rank ,iif(isnull(b.L5BCode,‘‘) = ‘‘,@count,dense_rank()over(order by b.L5BCode )) as L5Rank ,iif(isnull(b.L6BCode,‘‘) = ‘‘,@count,dense_rank()over(order by b.L6BCode )) as L6Rank ,iif(isnull(b.L7BCode,‘‘) = ‘‘,@count,dense_rank()over(order by b.L7BCode )) as L7Rank from Branches b inner join string_split(@branches,,) b2 on b.BranchCode = b2.value ) ,t2 as ( select top 1 * from ( select b.L0BCode,b.L1BCode,b.L2BCode,b.L3BCode,b.L4BCode,b.L5BCode,b.L6BCode,b.L7BCode ,sum(L0Rank)over(partition by 1) as L0Sum ,sum(L1Rank)over(partition by 1) as L1Sum ,sum(L2Rank)over(partition by 1) as L2Sum ,sum(L3Rank)over(partition by 1) as L3Sum ,sum(L4Rank)over(partition by 1) as L4Sum ,sum(L5Rank)over(partition by 1) as L5Sum ,sum(L6Rank)over(partition by 1) as L6Sum ,sum(L7Rank)over(partition by 1) as L7Sum from t1 as b ) as b order by b.L7BCode desc,b.L6BCode desc,b.L5BCode desc,b.L4BCode desc,b.L3BCode desc,b.L2BCode desc,b.L1BCode desc ) select @branchcode = ( case when L7Sum = @count then L7BCode when L6Sum = @count then L6BCode when L5Sum = @count then L5BCode when L4Sum = @count then L4BCode when L3Sum = @count then L3BCode when L2Sum = @count then L2BCode when L1Sum = @count then L1BCode when L0Sum = @count then L0BCode else L0BCode end ) from t2 select @branchcode

 

SQL - 获取多机构最近相同节点

标签:bsp   from   esc   code   获取   相同   value   varchar   ring   

人气教程排行