34,590
社区成员
发帖
与我相关
我的任务
分享
SELECT a.*,ISNULL(b.[FINISH_ QTY],0) AS [FINISH_ QTY]
FROM B AS a
LEFT JOIN B AS b ON a.[DOC_ID] = b.[DOC_ID]
AND b.[RAC_ID] = ( SELECT MAX([RAC_ID])
FROM B
WHERE [DOC_ID] = b.[DOC_ID]
AND [RAC_ID] < a.[RAC_ID]
);
select c.*,isnull(m.[FINISH_ QTY],'') aa from
(select row_number()over(order by RAC_ID) pm,* from b) as c
left join
(select row_number()over(order by RAC_ID) pm,* from b) m
on c.pm-1=m.pm
CREATE TABLE [dbo].[B](
[FINISH_QTY] [varchar](50),
[RAC_ID] [varchar](50) ,
[DOC_ID] [varchar](50)
)
insert into B values('100','010','72a4d16d8631')
insert into B values('90','020','72a4d16d8631')
insert into B values('80','030','72a4d16d8631')
insert into B values('70','040','72a4d16d8631')
insert into B values('60','041','72a4d16d8631')
insert into B values('0','060','72a4d16d8631')
insert into B values('0','070','72a4d16d8631')
insert into B values('0','080','72a4d16d8631')
with t as
(select *,row_number() over(partition by DOC_ID order by RAC_ID) 'rn'
from [B])
select a.FINISH_QTY,
a.RAC_ID,
a.DOC_ID,
'可用量'=isnull(b.FINISH_QTY,'0')
from t a
left join t b on a.DOC_ID=b.DOC_ID
and a.rn=b.rn+1
/*
FINISH_QTY RAC_ID DOC_ID 可用量
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------------------------------------------
100 010 72a4d16d8631 0
90 020 72a4d16d8631 100
80 030 72a4d16d8631 90
70 040 72a4d16d8631 80
60 041 72a4d16d8631 70
0 060 72a4d16d8631 60
0 070 72a4d16d8631 0
0 080 72a4d16d8631 0
(8 row(s) affected)
*/