我有一张叫做tblEventLocationStock的桌子。它存储特定位置和事件的库存销售信息。我试图获取一个项目列表,这些项目的起始计数与上一个事件的结束计数不同。我已经得到了这个查询,但是我得到了"子查询返回的值超过1"错误:
SELECT ID,EventID,LocationID,StockID,StartQty,UnitPrice,PhysicalSalesQty,PhysicalSalesValue,PhysicalEndQty,TillSoldQty,TillSoldValue
FROM tblEventLocationStock ELS
where StartQty <> (
select PhysicalEndQty from tblEventLocationStock ELSO
where ELS.StockID=ELSO.StockID
and ELS.LocationID=ELSO.LocationID
and ELS.EventID=(ELSO.EventID+1000))
ORDER BY ID desc
我使用ELS.EventID = ELSO.EventID + 1000,因为事件ID的间隔为1000.
奇怪的是,即使我得到&#34;子查询返回的值超过1&#34;错误,我仍然在结果选项卡中获得10行。这10个结果看起来对于项目的起始计数与前一个事件中相同位置的相同项目不同。此外,如果我使用订单,则无法获得结果,但如果我不使用订单,我仍会得到10个结果。
更奇怪的是,如果我使用某些联接到某些其他表来运行查询,那么我得到那10个结果,这样我就可以获得库存项目和位置的名称而不仅仅是ID,但是如果我这样做的话没有连接,我没有结果。
答案 0 :(得分:1)
试试这个,
SELECT ID, EventID, LocationID, StockID, StartQty, UnitPrice, PhysicalSalesQty,
PhysicalSalesValue, PhysicalEndQty, TillSoldQty, TillSoldValue
FROM tblEventLocationStock ELS
WHERE NOT EXISTS (
SELECT 1
FROM tblEventLocationStock ELSO
WHERE ELS.StockID = ELSO.StockID AND
ELS.StartQty <> ELSO.PhysicalEndQty AND
ELS.LocationID = ELSO.LocationID AND
ELS.EventID = (ELSO.EventID+1000)
)
ORDER BY ID DESC