所以我有一个搜索我的items表的查询并返回带有prodstat<>的所有记录NULL,它会执行一些汇总的库存字段。
我已将此查询绑定到另一个表,该表是审核日志表,它返回新的prodstat,旧的prodstat,更改了它以及日期。
问题是,如果字段有多处更改,它会引入额外的记录。我试图在创建日志记录时使用max来仅提取最新记录。问题是当我将它添加到我的其他查询时,我只获取日志文件中已更改的记录。
我正在寻找的是带有prodstat的所有商品记录<> Null和创建的字段,newvalue,oldvalue从日志表更新。
数据输出应如下所示
prodstat item.num item.desc onhandinv newprodstat oldprodstat changeddate
这是我到目前为止所做的:
Select
item.Uf_ProdStat,
item.item,
item.description,
a.UpdatedBy,
(Select SUM(itemloc.qty_on_hand)
from itemloc
where itemloc.item = item.item and itemloc.loc = 'Main')as qty_onhand,
a.createDate,
a.OldValue,
a.NewValue
From item
left join AuditLog a on item.item = a.KeyValue and MessageType = 10010
inner join (select max(createdate)as maxdate, keyvalue
from AuditLog
where MessageType = 10010 and NewValue in
('EOL','DISC','WHL','NNO')
group by KeyValue)
tm on A.KeyValue = tm.KeyValue and A.CreateDate = tm.maxdate
Where Uf_ProdStat is Not Null
这只返回与日志文件中已更改记录匹配的3条记录。我应该有100,日志文件部分现在正在添加。
答案 0 :(得分:0)
所以我一直在研究内部连接,这个似乎给了我所需要的一切......
From item
--left join AuditLog a on item.item = a.KeyValue and MessageType = 10010
left join (select a.messagetype,a.UserName as updatedby,a.CreateDate as recorddate,a.OldValue,a.keyvalue, a.NewValue
from AuditLog A
right join ( select max(createdate)as maxdate, keyvalue
from AuditLog
where MessageType = 10010 and NewValue in('EOL','NNO','DISC','WSL')
group by KeyValue)
tm on A.KeyValue = tm.KeyValue and A.CreateDate = tm.maxdate) AL on AL.keyvalue = item.item