我有一系列的记录。根据以下数据,如何获取 Doc Nos 等同于 9600012264
的根交易(XR)图例
Glide.with(mContext)
.load(message)
.into(mVideoThumbnailView);
数据
XR - is the lowest root transaction
XZ - is the highest root transaction
XA - can generate multiple times
CONDITION
Doc Nos Type TY Amount Cleared Doc
9500011864 | A121 | XR | 36247.62 | 9000001659
9000001659 | A121 | XA | 1.00 | 9000001660
9000001660 | A121 | XA | 36242.86 | 9600012264
9600012264 | A121 | XZ | -72490.48 | 9600012264
渴望输出
Doc Nos : 9600012264
TY : XZ
SQL CTE Recursive是否适用于此方法。我正在使用SQL Server 2016?需要帮助。有人可以为我做代码然后我会改进它。
答案 0 :(得分:0)
递归CTE,注意数据中的自引用。希望没有其他周期存在。如果需要,调整数据类型。
declare @DocNos varchar(20) = '9600012264';
declare @TY varchar(10) ='XZ';
with rc as (
select *
from Transactions t
where [Doc Nos] = @DocNos and TY=@TY
union all
select t.*
from Transactions t
join rc on t.[Cleared Doc] = rc.[Doc Nos]
-- stop at self ref
and rc.[Doc Nos] != t.[Doc Nos]
and rc.TY !='XR'
)
select *
from rc
where TY='XR';