SQL 选择行,前提是它们包含在给定年份的 TOP 中

标签 sql sql-server conditional-statements

我正在尝试选择今年最畅销产品的前几年数据,以了解它们随着时间的推移表现如何。

我目前有这样的东西:

SELECT TOP 10 * 
WHERE Table.Year = 2016
ORDER BY Table.Transactions DESC 

这为我提供了当年的数据,但我不确定如何提取前几年相同前 10 名的数据,因为今年的前 10 名可能与往年的前 10 名不同。

我想知道是否有办法做一些类似的事情:

SELECT *  
WHERE Table.Year = 2015 
AND (order ID was in Top 10 in 2016) 
ORDER BY Table.Transactions DESC 

除了显然我不知道用什么来代替括号条件。

如有任何建议,我们将不胜感激。谢谢!

最佳答案

你想要这个吗:

SELECT *  
From Table
WHERE Table.Year = 2015 
AND ID IN (
    SELECT TOP 10 ID
    FROM Table
    WHERE Table.Year = 2016 
    ORDER BY Table.Transactions DESC
)
ORDER BY Table.Transactions DESC 

关于SQL 选择行,前提是它们包含在给定年份的 TOP 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40271274/

相关文章:

mysql - SQL - 选择其中参数 A 是多个值之一且参数 B 相等

sql - MVVM 和 Entity Framework - 什么引发事件?

sql - 如何正确创建索引

sql-server - SQL 服务器 : Convert nulls into values when inserting fails - can I force this?

java - 根据系统时间调用函数

c# - Nhibernate 转义 linq 查询中的特殊字符

SQL Server : concatenate data result in to a table format

sql - 什么时候适合使用完全外连接?

javascript 并使用 php 调节

css - 如何在 smarty 模板引擎中对特定元素使用内联 CSS?