我有一張名爲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來代替 '<>' –