You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于指定条件获取行值的T-SQL实现请求

T-SQL实现根据关联ID获取对应产品ID的需求

没问题,我来帮你搞定这个T-SQL需求!这个场景属于典型的自关联查询,我们可以通过表自连接结合COALESCE函数轻松实现逻辑判断。

完善后的完整脚本

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 
    t.id, 
    t.invoice_id, 
    t.product_id,
    t.invoice_line_id_link, 
    -- 核心逻辑:当link为0时取当前行product_id,否则取关联行的product_id
    COALESCE(t_link.product_id, t.product_id) as desiredoutput
from @t t
left join @t t_link on t.invoice_line_id_link = t_link.id
order by t.id;

逻辑说明

  1. 自连接关联:用LEFT JOIN @t t_link on t.invoice_line_id_link = t_link.id将原表与自身关联,关联条件是当前行的invoice_line_id_link匹配关联表的id字段。
  2. COALESCE函数取值:
    • 当invoice_line_id_link为0时,关联表找不到id=0的记录,t_link.product_id会返回NULL,此时COALESCE会取当前行的t.product_id。
    • 当invoice_line_id_link不为0时,关联表能匹配到对应id的行,直接取t_link.product_id即可。

预期输出结果

运行脚本后,desiredoutput列的结果如下:

  • id=53:383(link为0,取自身产品ID)
  • id=54:383(link=53,匹配id=53的产品ID)
  • id=55:383(link=53,匹配id=53的产品ID)
  • id=57:384(link为0,取自身产品ID)
  • id=58:384(link=57,匹配id=57的产品ID)
  • id=59:384(link=57,匹配id=57的产品ID)
  • id=60:284(link为0,取自身产品ID)

内容的提问来源于stack exchange,提问作者Kiddo Gabaldon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:21:53