今天早上我想把头绕在这个上面。
我正在尝试显示inventory
零件(对于我们的产品)的状态,只有当我尝试返回所有零件时,此查询才会变得复杂。
让我列一下:
- 单表
inventoryReport
- 我有一个要显示的 X 零件的不同列表,其结果必须是 X # 行(每个零件 1 行显示最新的库存条目)。
- 表由库存更改的日期条目组成(因此我只需要
LATEST
每个零件的日期条目)。 - 此单个表中包含的所有数据,因此无需连接。
目前对于 1 个单独的部分,它相当简单,我可以通过执行以下 sql 来完成此操作(给您一些想法):
SELECT TOP (1) ldDate, ptProdLine, inPart, inSite, inAbc, ptUm, inQtyOh + inQtyNonet AS in_qty_oh, inQtyAvail, inQtyNonet, ldCustConsignQty, inSuppConsignQty
FROM inventoryReport
WHERE (ldPart = 'ABC123')
ORDER BY ldDate DESC
这让我获得了我的 TOP 1 行,每个部分都很简单,但是我需要显示所有 X(比如说 30 个部分)。所以我需要 30 行,结果就是这样。当然,简单的解决方案是在我的代码中循环 X# 的 sql 调用(但这会很昂贵),这已经足够了,但为此我希望更多地使用这个 SQL 来减少对数据库的 x# 调用(如果不需要)减少到只有 1 个查询。
从我在这里看到的情况来看,我需要在查找我的结果集时以某种方式跟踪每个项目的最新日期。
我最终会做一个
WHERE ldPart in ('ABC123', 'BFD21', 'AA123', etc)
限制我需要的部分。希望我的问题足够清楚。让我知道你是否有想法。我不能这样做,DISTINCT
因为行不一样,日期必须是最新的,而且我最多需要 X 行。
想法?我被困住了...