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

SQL Server查询:如何将明细表的账户ID替换为对应名称

问题描述

有两张表:表H为表头表,表B为明细表。

表H结构及数据:

ACCIDAccName
1Acc1
2Acc2
3Acc3

表B结构及数据:

IDAccID_receiveAccID_payment
112
212
323

期望查询结果:

IDAccID_receiveAccID_payment
1Acc1Acc2
2Acc1Acc2
3Acc2Acc3

你尝试的SQL语句仅关联了一次表H,只能获取AccID_receive对应的名称,无法同时匹配AccID_payment的对应名称,因此不符合需求。

正确的SQL Server查询语句

需要两次关联表H,分别为接收账户和支付账户匹配对应的名称,通过别名区分两次关联的表:

SELECT 
    B.ID,
    H_receive.AccName AS AccID_receive,
    H_payment.AccName AS AccID_payment
FROM B
LEFT JOIN H AS H_receive ON B.AccID_receive = H_receive.ACCID
LEFT JOIN H AS H_payment ON B.AccID_payment = H_payment.ACCID

说明

  • 给两次关联的表H设置H_receive和H_payment别名,避免字段冲突
  • 使用LEFT JOIN保证即使某个ID在表H中无匹配项,B表的记录仍会被保留(若业务要求ID必须存在匹配,可改为INNER JOIN)
  • 通过AS将查询出的AccName重命名为目标列名,与期望结果格式一致

内容的提问来源于stack exchange,提问作者Ahmed Saif

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 20:04:58