Как проверить, была ли достигнута последняя запись - PullRequest
1 голос
/ 14 июня 2019

У меня есть следующий код, который возвращает возможные 4 строки из tblItems. Однако, если любая выбранная строка оказывается последней строкой в ​​tblItems, как я могу вернуть @lastBox как "Y"

Я установил DECLARE @lastBox varchar (1), который я хочу вернуть Y или N, чтобы сказать, является ли это последним блоком или нет. Не уверен, куда идти оттуда.

ALTER PROCEDURE [dbo].[SelectBoxes]
@bootSaleDate   DATE,
@itemcategory   Int,
@page  Int

AS
BEGIN
   SET NOCOUNT ON;

   select * from (SELECT ROW_NUMBER() OVER (ORDER BY dateAdded desc) as [RowNo],  bootSaleDate,  '<a href="https://www.myUrl.co.uk/video.aspx?oid='  + CAST(ISNULL([fileID],'') AS NVARCHAR(5)) + '"><br /><image width="140" height="200" src="catalog/thumbnails/' + convertedFilename + '" /></a>' as strText, fileID, [buyPrice] as buyPrice

   FROM [tblItems] WHERE sold='n' AND itemCategory=@itemCategory)t

   where RowNo between (@page*4)-3 AND (@page*4)

   DECLARE @lastBox   varchar(1)

END

1 Ответ

0 голосов
/ 14 июня 2019

Сравните номер строки с количеством:

SELECT *,
    CASE WHEN RowNo < cnt THEN 'N' ELSE 'Y' END AS box
FROM
(
    SELECT ROW_NUMBER() OVER (ORDER BY dateAdded desc) as [RowNo],
        COUNT(*) OVER () cnt,
        bootSaleDate,  '<a href="https://www.myUrl.co.uk/video.aspx?oid='  + CAST(ISNULL([fileID],'') AS NVARCHAR(5)) + '"><br /><image width="140" height="200" src="catalog/thumbnails/' + convertedFilename + '" /></a>' as strText, fileID, [buyPrice] as buyPrice
    FROM [tblItems]
    WHERE sold = 'n' AND itemCategory = @itemCategory
) t
WHERE RowNo BETWEEN (@page*4)-3 AND (@page*4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...