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

如何在Item Ledger Entry表中查询指定物料的最新Vendor No.?

修改方案获取指定物料的最新Vendor No.

要获取指定物料的最新Vendor No.,你需要先筛选出采购类记录(Entry Type=0且Source Type=2),并针对每个物料取Posting Date最晚的那条记录的Vendor No.。以下是修改后的完整SQL查询:

SELECT 
    ile.[Posting Date], 
    CASE
        WHEN ile.[Entry Type]=1 THEN 'Sale'
        WHEN ile.[Entry Type]=5 THEN 'Consumption'
    END AS Entry_Type, 
    ile.[Item No_],
    ile.[Description], 
    ile.[Quantity],
    ile.[Unit of Measure Code],
    item.[Description],
    latest_vendor.[Vendor No_] AS [Last Vendor No.]
FROM [MyServer]..[MyDatabase$Item Ledger Entry] as ile with (nolock)
LEFT JOIN [MyServer]..[MyDatabase$Item] as item  ON item.[No_]=ile.[Item No_]
-- 关联获取每个物料的最新供应商编号
LEFT JOIN (
    SELECT 
        [Item No_],
        [Vendor No_],
        -- 按Posting Date倒序排序,取最新的一条
        ROW_NUMBER() OVER (PARTITION BY [Item No_] ORDER BY [Posting Date] DESC) AS rn
    FROM [MyServer]..[MyDatabase$Item Ledger Entry]
    WHERE [Entry Type] = 0 AND [Source Type] = 2
) AS latest_vendor 
    ON latest_vendor.[Item No_] = ile.[Item No_] 
    AND latest_vendor.rn = 1 -- 只保留最新的那条记录
WHERE ile.[Entry Type] In (1,5) AND ile.[Item No_] ='123456789';

关键说明:

  • 子查询中使用ROW_NUMBER()函数,按Item No_分组,每组内按Posting Date降序排列,标记最新的记录为rn=1。
  • 通过LEFT JOIN将最新供应商编号关联到主查询,确保即使物料没有采购记录,主查询结果也不会被过滤。
  • 如果你的系统中判断"最新"的依据不是Posting Date,可以替换为Entry No_(通常Entry No_是自增的,更大的编号代表更晚的记录),修改排序条件为ORDER BY [Entry No_] DESC即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:30:50