Работает ли смещение с временными таблицами и командой Rows - PullRequest
0 голосов
/ 22 сентября 2019

Я хотел использовать новые строки и смещение в более поздних версиях SQL Server 2014 и выше, но, похоже, это не позволяет мне делать это с временными таблицами.

Я присоединяю другой запрос к этому и вставляю их в временную таблицу.Причина, по которой я хочу использовать команду смещения, была для подкачки, но я думаю, что она не работает с временными таблицами.

select st.StocktakeID, 
              bi.BinName, 
              si.ItemID as StockItemID, 
              si.Code, 
              si.Name, 
              si.Barcode, 
              si.StockUnitName,
              scsi.StocktakeCountShtItemID, 
              scsi.RecordedQuantityInStock,
              scsi.ActualQuantityEntered,
              scsi.ActualQuantityInStock
into #StockTakeItems
from #StockTakes st
join StocktakeCountSheetItem scsi on st.StocktakeID = scsi.StocktakeID
join BinItem bi on scsi.BinItemID = bi.BinItemID
join StockItem si on bi.ItemID = si.ItemID


select * from #StockTakeItems sti 
OFFSET @start Rows  
Fetch NEXT 10 ROWS ONLY 

end
GO

Я получаю ошибку

неверный синтаксисрядом с ожидаемыми строками

Но я использую 2014 на производственном сервере и 2017 на тестовом сервере, это должно сработать в 2017 или они удалили его.

enter image description here

1 Ответ

0 голосов
/ 22 сентября 2019

Вам нужно добавить порядок, я полагаю, при использовании смещения и выборки на сервере SQL.Я думаю, что это должно работать.

select st.StocktakeID, 
              bi.BinName, 
              si.ItemID as StockItemID, 
              si.Code, 
              si.Name, 
              si.Barcode, 
              si.StockUnitName,
              scsi.StocktakeCountShtItemID, 
              scsi.RecordedQuantityInStock,
              scsi.ActualQuantityEntered,
              scsi.ActualQuantityInStock
into #StockTakeItems
from #StockTakes st
join StocktakeCountSheetItem scsi on st.StocktakeID = scsi.StocktakeID
join BinItem bi on scsi.BinItemID = bi.BinItemID
join StockItem si on bi.ItemID = si.ItemID


select * from #StockTakeItems sti 
order  by StocktakeID
OFFSET @start Rows  
Fetch NEXT 10 ROWS ONLY

Вы также можете проверить эту ссылку:

http://www.sqlservertutorial.net/sql-server-basics/sql-server-offset-fetch/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...