如何根据不同表的相同 ID 使用不同行的值填充列中的 NULL

How to fill a NULL in a column with the value of a different line based on same id of a different table

提问人:Sternahirundo 提问时间:8/19/2023 最后编辑:marc_sSternahirundo 更新时间:8/19/2023 访问量:41

问:

这是我的SQL查询:

SELECT 
    GXFINENTRYLINES.GXID, GXFINENTRY.GXID FINENTRYGXID, 
    GXTRADER.GXNAME, GXFINENTRYLINES.GXLINENUM,  
    GXFINENTRYLINES.GXTRNVALUE  
FROM 
    GXFINENTRYLINES  
LEFT JOIN 
    GXTRADEENTRY ON GXFINENTRYLINES.GXTENTID = GXTRADEENTRY.GXID  
LEFT JOIN 
    GXFINENTRY ON GXFINENTRYLINES.GXFENTID = GXFINENTRY.GXID  
INNER JOIN 
    GXFINENTRYTYPE ON GXFINENTRY.GXFETPID = GXFINENTRYTYPE.GXID  
LEFT JOIN 
    GXTRADER ON GXFINENTRYLINES.GXTRDRID = GXTRADER.GXIDyour`

结果是这样的:

GXFINENTRYLINES中。GXID公司 FINENTRYGXID GXNAME名称 亚利纳姆 GXTRNVAL的
BA4A846A-2D3E-7974-DC0B-018A02C26931 D0CFE900-8A25-BF6E-1125-018A02C226F0 NAME_A -1 3800.00
5BBB6000-34FE-43B7-C173-018A02C27527 D0CFE900-8A25-BF6E-1125-018A02C226F0 1 3300.00
C8529015-DC40-EA1E-36A1-018A02E3F088 D0CFE900-8A25-BF6E-1125-018A02C226F0 2 500.00
BE224ED1-A770-62C3-DB71-0185DDB1B62C 型号:2E1CE68A-5D4A-BBD8-021F-0185DDB0CB13 NAME_B -1 2500.00
95F1F307-143F-8864-A987-0185DDB1F457 型号:2E1CE68A-5D4A-BBD8-021F-0185DDB0CB13 1 2500.00

但是我试图找到的,我想要的结果是将名称放在而不是 B 列 () 中的 id 的位置和位置相同。GXNAMENULLLINENUM <> -1FINENTRYGXID

结果应如下所示:

GXFINENTRYLINES中。GXID公司 FINENTRYGXID GXNAME名称 亚利纳姆 GXTRNVAL的
BA4A846A-2D3E-7974-DC0B-018A02C26931 D0CFE900-8A25-BF6E-1125-018A02C226F0 NAME_A -1 3800.00
5BBB6000-34FE-43B7-C173-018A02C27527 D0CFE900-8A25-BF6E-1125-018A02C226F0 NAME_A 1 3300.00
C8529015-DC40-EA1E-36A1-018A02E3F088 D0CFE900-8A25-BF6E-1125-018A02C226F0 NAME_A 2 500.00
BE224ED1-A770-62C3-DB71-0185DDB1B62C 型号:2E1CE68A-5D4A-BBD8-021F-0185DDB0CB13 NAME_B -1 2500.00
95F1F307-143F-8864-A987-0185DDB1F457 型号:2E1CE68A-5D4A-BBD8-021F-0185DDB0CB13 NAME_B 1 2500.00

我将不胜感激您的帮助!

sql-server 选择 null

评论


答:

2赞 Stu 8/19/2023 #1

如果没有看到一些示例数据,就不可能简洁明了,但是我怀疑您可以在此处为列使用窗口聚合:

..., max(GXTRADER.GXNAME) over(partition by FINENTRYGXID) as GXNAME,...

评论

1赞 Sternahirundo 8/19/2023
多谢!无需样本数据!你的答案是对的!