我必须找到按acco_key分组的最大oras_key。因此,如果acco_key = 5,并且出现在oras_Key =(1,4,5,7)中,结果应该是oras_key = 7,acco_key = 5(最大的oras_key)。 这是问题的一部分。查找其他列之前的列中的最大值
问题的其他部分: 我必须找到所有这些记录 - 最大的oras_key,按acco_key分组。 之后,排序必须由oras_key完成。
我已经alreday尝试分组,但我不知道如何找到最大的oras_key,如果我通过acco_key分组?
这里是表,数据和所需的输出:
+----------+----------+----------+
| oras_key | merc_key | acco_key |
+----------+----------+----------+
| 1 | 3 | 5 |
| 2 | 3 | 6 |
| 3 | 3 | 7 |
| 4 | 3 | 5 |
| 5 | 3 | 5 |
| 7 | 3 | 5 |
| 8 | 3 | 6 |
| 9 | 3 | 6 |
| 10 | 3 | 6 |
| 11 | 3 | 8 |
| 12 | 3 | 8 |
| 13 | 3 | 8 |
| 14 | 3 | 9 |
+----------+----------+----------+
表定义和数据:
declare @tblTemp3 table
(
oras_key int,
merc_key int,
acco_key int
)
insert into @tblTemp3 (oras_key, merc_key, acco_key)
values(1, 3, 5),
(2, 3, 6),
(3, 3, 7),
(4, 3, 5),
(5, 3, 5),
(7, 3, 5),
(8, 3, 6),
(9, 3, 6),
(10, 3, 6),
(11, 3, 8),
(12, 3, 8),
(13, 3, 8),
(14, 3, 9)
所需的输出:
+----------+----------+----------+
| oras_key | merc_key | acco_key |
+----------+----------+----------+
| 14 | 3 | 9 |
| 13 | 3 | 8 |
| 10 | 3 | 6 |
| 7 | 3 | 5 |
| 3 | 3 | 7 |
+----------+----------+----------+
非常感谢你的努力,它的工作原理。也许你有一个关于该主题的好教程的链接? – FrenkyB
嗨!您可以使用[MAX()](https://docs.microsoft.com/en-us/sql/t-sql/functions/max-transact-sql)函数的文档和[this](http:/ /mickeystuewe.com/2012/10/28/the-row_number-function-as-an-alternate-to-the-max-function/)文章。 –