我在数据库中有一个表:
DRN | VoucherNo | CrDRN
-----------------------
1 |80 |?
2 |11 |?
3 |11 |?
4 |80 |?
5 |11 |?
我试图获取DRN
列的CrDRN
号码。
计算如下:
CrDRN
都是DRN
号VoucherType
为11的任何行都会有前一条记录的DRN
个数,VoucherType
等于80 因此,在这种情况下,CrDRN
列值将为:
1
1
1
5
5
我在想我需要使用Where VoucherType = 80
但我无法理解第二个80的概念
任何帮助将不胜感激
答案 0 :(得分:1)
您可以使用相关子查询来实现此逻辑,假设"之前"基于drn
列:
select drn, voucherno,
(case when voucherno <> 0 then t.drn
else (select t2.drn
from table t2
where t2.id < t.id and
t2.voucherno = 80
order by t2.drn desc
limit 1
)
end) as crDRN
from table t;