我要求遵循以下事项。
有分配到类别的横幅。 每个类别的横幅都不是动态的。
假设我在一个类别中有100个产品,在该类别中有3个横幅。然后它将如下所示。
第1页:1-10产品和Banner1
第2页:11-20产品和Banner2
第3页:21-30产品和Banner3
第4页:31-40产品和Banner1
第5页:31-40产品和Banner2
第6页:41-50产品和Banner3
即可。
我需要一个查询来在每个页面中选择一个横幅。
任何人都可以帮我实现这个目标吗?
数据库方案供参考:
dbo.Category(Id int,CategoryName Varchar(100))
dbo.Product(Id int,ProductName varchar(100),Description varhcar(max),ImageLink varchar(100))
dbo.Category_Product_Mapping(CategoryId int,ProdcutId int)
dbo.Banner(Id int,ImageLink varchar(100),DisplayOrder int,CategoryId int)
答案 0 :(得分:0)
试试这个,
create table #product (productid int)
insert into #product values (9),(19),(29)
,(39),(49),(59),(69),(79),(89),(99),(100),(111)
,(121)
DECLARE @rangesize INT = 10
DECLARE @numberofBanner INT = 3
DECLARE @Margin INT = @rangesize * @numberofBanner
SELECT productid
,CASE
WHEN productid < @Margin
THEN (productid / @rangesize) + 1
ELSE (productid / @rangesize) % @numberofBanner + 1
END bannerid
FROM #product
DROP TABLE #product
或者,您可以创建一个临时表,如下所示
create table #bannerrange (FromID int,ToID int,Bannerid int)
--then join with product table
drop table #product