根据条件获取行值 - T-SQL

Get a row value based on criterias - T-SQL

Sample Data in Yellow the desired output

只需要您的专家帮助。

我需要得到基于 T-SQL 的输出。每当 invoice_line_id_link 为 0 时,将 product_id 值放入 id 列并获取该行的 product_id

这是脚本。

declare @t table
(id int, invoice_id int, product_id int, invoice_line_id_link int);

insert into @t values
(53,10,383,0),
(54,10,344,53),
(55,10,920,53),
(57,10,384,0),
(58,10,359,57),
(59,10,242,57),
(60,10,284,0); 

select id, invoice_id, product_id,invoice_line_id_link,  null desiredoutput from @t

如果可能的话,基于图像使用 TSQL 填充

根据您提供的图像,这是生成所需输出的代码段。

Table 填充

declare @t table (id int, invoice_id int, product_id int, invoice_line_id_link int);

insert into @t values (53,10,383,0), (54,10,344,53), (55,10,920,53), (57,10,384,0), (58,10,359,57), (59,10,242,57), (60,10,284,0);

输出代码

select *,CASE WHEN invoice_line_id_link = 0 THEN product_id
ELSE (select t1.product_id from @t t1 where t1.id = t2.invoice_line_id_link) 
END from @t t2

输出

id  invoice_id  product_id  invoice_line_id_link    desiredoutput
53  10  383 0   383
54  10  344 53  383
55  10  920 53  383
57  10  384 0   384
58  10  359 57  384
59  10  242 57  384
60  10  284 0   284
*/