请求扩展供应商最新单据录入日期SQL查询,关联供应商信息表
没问题,你只需要把原查询的结果和表B做关联就能获取到供应商的额外信息啦。这里分享两种常见的实现方式,你可以根据自己的数据库习惯选择:
方式一:子查询关联
SELECT a.SUPPLIERNUMBER, b.SUPPLIERNAME, -- 替换成表B中实际的供应商名字段 b.SHORTNAME, -- 替换成表B中实际的供应商简称字段 b.BANKINFO, -- 替换成表B中实际的银行信息字段 a.LATEST_INPUT_DATE FROM ( -- 原查询包装成子查询,给最新日期起别名方便引用 SELECT SUPPLIERNUMBER, MAX(DATEOFINPUT) AS LATEST_INPUT_DATE FROM TABLEA WHERE COUNTRY IN ('661') AND COMPANY IN ('01','40') GROUP BY SUPPLIERNUMBER ) a -- 通过供应商编号关联表B,确保关联字段和实际一致 JOIN TABLEB b ON a.SUPPLIERNUMBER = b.SUPPLIERNUMBER;
如果存在表A有记录但表B无对应供应商的情况,且你想保留这些供应商的信息,可以把JOIN换成LEFT JOIN,此时表B的字段会显示为NULL。
方式二:CTE(公共表表达式)写法
这种写法逻辑更清晰,尤其适合后续要扩展查询的场景:
WITH SupplierLatestDates AS ( -- 先定义CTE存储原查询的结果 SELECT SUPPLIERNUMBER, MAX(DATEOFINPUT) AS LATEST_INPUT_DATE FROM TABLEA WHERE COUNTRY IN ('661') AND COMPANY IN ('01','40') GROUP BY SUPPLIERNUMBER ) SELECT s.SUPPLIERNUMBER, b.SUPPLIERNAME, b.SHORTNAME, b.BANKINFO, s.LATEST_INPUT_DATE FROM SupplierLatestDates s JOIN TABLEB b ON s.SUPPLIERNUMBER = b.SUPPLIERNUMBER;
注意事项
- 确认表A和表B的关联字段确实是
SUPPLIERNUMBER,如果实际是其他字段(比如SUPPLIER_ID),记得替换成真实的关联键 - 把示例中的
b.SUPPLIERNAME等字段名,换成表B中对应的实际字段名称
内容的提问来源于stack exchange,提问作者Uriel Nicolas
相关产品推荐
相关产品推荐

