我能返回两个最高的聚合结果吗?
例如,我有这样一个结果:
CustomerId Total
---------------------
5 1100.00
n/a 100.00
7 100.00
6 0.00
我需要返回最多2行,如下所示:
CustomerId Total
-----------------------
5 1100.00
7 100.00
n/a 100.00
我试过了 TOP 2
,但问题是,如果存在具有相同值的行,我不知道如何返回更多行。
这是我目前的问题
SELECT
ISNULL(CONVERT(varchar(50), u.CustomerId), 'not found') CustomerId ,
ISNULL(SUM(o.Total), 0.00) Total
FROM
Orders o
FULL OUTER JOIN
CustomerId u ON u.UserId = o.UserId
GROUP BY
u.CustomerId
ORDER BY
Total DESC;
2条答案
按热度按时间0ejtzxu11#
你想要什么
WITH TIES
?现在还不清楚为什么你真的需要一个
FULL JOIN
. 除非你有孤儿的命令,那应该是一个LEFT JOIN
从customers表开始,然后转到orders表。也不清楚为什么有一个名为CustomerId
,具有同名的列。理想情况下,您可以命名该表Customers
因此:h22fl7wq2#
首先,不需要外部连接,除非您的数据模型真的很混乱。
你可以用
TOP 2 WITH TIES
: