首页 > 解决方案 > 如何根据sql中的另一列获取列中的增量值

问题描述

我有下表记录。对于每个 TranNo,我必须在预期结果列中增加一个。可能吗?

在此处输入图像描述

如何在 sqlserver 中得到这个结果?

我无法得到适当的结果

 <Expected Result>
1
1
2
3
4
5
6
7
8

我试过了:

SELECT BatchNo,
       TranNo,
       WorkSource
FROM table1 WITH (NOLOCK)
WHERE BatchNo IN ('0000000420', '0000000421', '0000000422')
  AND PROCESSDATE = '20190206'
GROUP BY WorkSource,
         BATCHNO,
         TranNo;

标签: sql-server

解决方案


你可以试试这个

create table #temp (WorkSource char(3), BatchNo char(3), TranNo int)
insert into #temp values
('012', '001', 1),
('012', '001', 1),
('012', '001', 2),
('012', '001', 3),
('012', '002', 1),
('012', '002', 2),
('012', '003', 3),
('013', '005', 1),
('013', '005', 2)

SELECT *, Dense_Rank() OVER(ORDER BY BatchNo, TranNo) AS Row_Number  
FROM #temp

推荐阅读