我有一张名为tblEventLocationStock的表。它存储某个地点和事件的股票销售信息。我试图得到一个与上一个事件的结束计数不同的项目列表。我有了这个查询,但我得到的“子查询返回多个值”错误:我为SQL Server的这个子查询做了什么错误?
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的间隔上去。
奇怪的是,即使我得到“子查询返回多个值”的错误,我仍然在结果选项卡中得到10行。这10个结果看起来似乎具有与前一个事件相同的位置上的相同项目不同的起始计数。另外,如果我使用订单,我将得不到任何结果,但如果我不使用订单,我仍然会得到10个结果。
更奇怪的是,如果我运行一些连接到某些其他表的查询来获得这10个结果,这样我就可以获取股票项目和位置的名称而不仅仅是ID,但如果我没有加入,我没有结果。
为什么你可以使用NOT EXISTS来代替 '<>' –