У меня есть таблица tblEventLocationStock. Он хранит информацию о продажах для акций в определенном месте и событии. Я пытаюсь получить список элементов, которые имеют другой начальный счет, чем счетчик окончания из предыдущего события. У меня есть этот запрос, но я получаю «подзапрос возвращает более чем 1 значение» ошибка:Что я сделал с этим подзапросом для 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, так как идентификатор события Поднимемся в интервалах 1000.
Что странно в том, что даже если я получаю ошибку «подзапрос возвратил более одного значения», я все равно получаю 10 строк на вкладке результатов. Кажется, что у этих 10 результатов есть другой начальный счет для предметов, чем тот же элемент в том же месте, что и предыдущее событие. Кроме того, я не получаю никаких результатов, если я использую порядок, но все равно получаю 10 результатов, если я не использую порядок.
Что еще более странно, так это то, что я получаю эти 10 результатов, если я запускаю запрос с некоторыми объединениями в некоторые другие таблицы, поэтому я могу получить имена элементов и местоположений акций вместо отдельных идентификаторов, но если я сделаю это без присоединяется, я не получаю никаких результатов.
Почему вы можете использовать NOT EXISTS вместо '<>' –