sql-server - 如何检查是否已达到最后一条记录
问题描述
我有以下代码从 tblItems 返回可能的 4 行。但是,如果选择的任何行恰好是 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
解决方案
将行号与计数进行比较:
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)
推荐阅读
- android - 如何在 Firebase 回收器适配器中实现 recyclerview ItemClickListener()?
- javascript - 如何在 Angular 中访问 Json 中的嵌套键值对
- c++ - 使用基地址和偏移量获取变量的地址
- python - (Python) Monkeypatch __new__ 用于 python 中的 int、float、str、list、dict、set 和 module 类型的对象
- android - adb 服务器版本 (41) 与此客户端 (39) 不匹配
- python-3.x - 使用混合 cnn+svm 模型的图像识别
- html - 如何让两个引导卡并排使用媒体查询来响应?
- php - 使用 eloquent 和 SnmpDriver 迁移在 Laravel 中更新具有不同值的多行
- python - Python - 数据帧中第 2、第 3、第 n 大的 idxmax
- wcf - 如何在 WSDL 中为 WCF 服务设置 EndpointReference?