【发布时间】:2014-08-26 16:27:30
【问题描述】:
我正在尝试确定上次收到库存商品的时间,并且只显示此日期以及每个库存商品,但我还需要提取其他信息,例如仓库名称。
我正在使用以下表格:
- 库存:包含库存计数
- Part_Info:包含零件信息(描述、仓库标识符)
- Warehouse_Info:包含仓库名称
- Received_Parts:包含所有收到部件的日志,但没有日期信息。
- Receive_Master:包含按接收 ID 接收部件的日期。
我的思考过程:
- 通过 PartID 将 Inventory 加入 Part_Info:这为我提供了零件的详细信息、名称和描述。
- 通过 WarehouseID 将 Inventory 加入 Warehouse_Info:这将获取仓库名称。
这就是我卡住的地方。
Received_Parts 包含收到的所有零件,但没有日期信息。要获取日期信息,我需要通过 Received_Parts_ID 绑定到 Receive_Master。
我想我可以通过 MAX() 函数获取特定 PartID 的最高receipt_parts_id,然后将其绑定回 Receive_Master 以提取该特定条目的日期。
很遗憾,我所做的每一次加入尝试都失败了。
这是我最近的尝试:
select
a.*,
b.*,
c.*,
d.*,
e.*
FROM dbo.IN_Inventory a
LEFT OUTER JOIN dbo.IN_Part b
ON a.Part_Id = b.part_id
LEFT OUTER JOIN IN_Warehouse c
ON a.Warehouse_Id = c.Warehouse_Id
INNER JOIN IN_Receipt_Parts d
ON a.Part_Id = d.Part_Id
INNER JOIN
(
SELECT part_id, receipt_id, MAX(receipt_parts_id) maxReceipt
FROM IN_Receipt_Parts
GROUP BY Part_Id
) e ON d.Part_Id = e.Part_Id AND d.Receipt_Parts_Id = e.maxReceipt
LEFT OUTER JOIN IN_Receipt f
ON e.Receipt_Id = f.Receipt_Id
WHERE
a.On_Hand_New > 0
【问题讨论】:
-
你能用一些示例数据编写表格模式吗?这样我就可以在本地机器上运行它来测试
-
这是sql server还是MySql?它们不是一回事,答案可以很大。
-
向我们展示您的尝试,我们或许可以帮助您解决问题。
-
这是 SQL Server,对此感到抱歉,我以为我已经正确标记了它(我刚刚修复了它)。到目前为止,这是我尝试过的:
-
好的,所以不知道如何在 cmets 中发布 sql 脚本。 :(
标签: sql sql-server