我真的不知道协议 ID > 1 背后的业务逻辑。在我看来,无论供应商 ID 是什么,您都希望通过协议 ID 获得最大销售额(有关系)。
首先,让我们创建一个简单的示例数据库。
-- Sample table
create table #sales
(
vendor_id int,
agreement_id int,
sales_amt money
);
-- Sample data
insert into #sales values
(12001, 1004, 700),
(5291, 1004, 20576),
(7596, 1004, 1908),
(45, 103, 345),
(41, 103, 9087);
其次,让我们使用一个公共表表达式来解决这个问题,以获得一个结果集,该结果集的每一行都与按协议 ID 的最大销售额配对。
select 语句只是应用业务逻辑来过滤数据以获得您的答案。
-- CTE = max sales for each agreement id
;
with cte_sales as
(
select
vendor_id,
agreement_id,
sales_amt,
max(sales_amt) OVER(PARTITION BY agreement_id) AS max_sales
from
#sales
)
-- Filter by your business logic
select * from cte_sales where sales_amt = max_sales and agreement_id > 1;
下面的屏幕截图显示了您想要的确切结果。