根据标准获取行值 - T-SQL

时间:2018-01-16 10:33:16

标签: sql-server tsql cursor

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填充 enter image description here

1 个答案:

答案 0 :(得分:0)

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

表填充

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
*/