我有一个包含日期的表,一个包含多个书名的列,最后一个包含每个书名的销售数量的列。在任何一天,有 1 到 10 本书可以实现销售。也许“标题 1”10 块,“标题 3”5 块,“标题 4”15 块。改天,也许只有 Title 2 和 Title 7 等有销售。
现在,重点关注售出超过 1 个图书的那些日子,我可以使用 [ORDER BY] 销售数量选择日期、图书和销售数量,实际上结果是一个包含每日最高销量的表格通过订购条款。但是,如果我还需要每个标题的索引,以便我可以每天看到标题 3 的位置,该怎么办?是否可以在查询结果中添加这么简单的索引?
所以我希望实现的是如下的查询结果:
日期 | 标题 | 索引 | 销售 |
---|---|---|---|
2024 年 8 月 15 日 | 标题 2 | 1 | 125 |
2024 年 8 月 15 日 | 第 4 篇 | 2 | 100 |
2024 年 8 月 15 日 | 第 5 篇 | 3 | 90 |
2024 年 8 月 15 日 | 第9篇 | 4 | 50 |
2024 年 8 月 16 日 | 标题1 | 1 | 230 |
2024 年 8 月 16 日 | 标题 2 | 2 | 150 |
2024 年 8 月 16 日 | 第 7 篇 | 3 | 100 |
2024 年 8 月 17 日 | 第 4 篇 | 1 | 50 |
2024 年 8 月 17 日 | 第9篇 | 2 | 20 |
等
我正在将 MS ACCESS 与 VB.NET 一起使用,并努力寻找一种方法。 谢谢
您可以使用子查询来计算销量高于当前行的图书数量。这将获得您正在寻找的行排名(索引)。
如果2个作品的销量相同,则它们将获得相同的指数。如有必要,您还可以额外排名,例如按名称排名。
参见示例
SELECT t1.*,
(select count(*) from DateTitleIndexSales as t2
where t2.SalesDate=t1.SalesDate
and (t2.sales>t1.sales or (t2.sales=t1.sales and t2.title<t1.title))
)+1 as index
FROM DateTitleIndexSales as t1
order by SalesDate, Sales desc,Title ;