【发布时间】:2016-01-07 05:23:54
【问题描述】:
我有一张这样的桌子..
Priority | Amount | Case
P1 | 100 | 1
P1 | 200 | 2
P1 | 300 | 1
P3 | 400 | 3
我想先按Priority 和Amount(降序)排序,然后按Case 排序,看起来像这样。
Priority | Amount | Case
P1 | 300 | 1
P1 | 100 | 1
P1 | 200 | 2
P3 | 400 | 3
如果我使用ORDER BY Priority, Amount DESC, Case,那么它会返回这个。其中Case 未根据Amount 的最高值分组在一起。
Priority | Amount | Case
P1 | 300 | 1
P1 | 200 | 2
P1 | 100 | 1
P3 | 400 | 3
编辑:为清楚起见再添加一条记录:
Priority | Amount | Case
P1 | 100 | 1
P1 | 200 | 2
P1 | 300 | 1
P1 | 200 | 0 << New record
P3 | 400 | 3
这应该返回为:
Priority | Amount | Case
P1 | 300 | 1
P1 | 100 | 1
P1 | 200 | 0
P1 | 200 | 2
P3 | 400 | 3
首先它按Priority 分组,其中按最高Amount 排序,然后在Amount 中按Case 分组
【问题讨论】:
-
你想要的输出似乎需要这个:
ORDER BY Priority, Case, Amount DESC我在这里遗漏了什么吗? -
嗨蒂姆。我已经编辑了我的问题以提供更清晰的图片。请仔细研究并提出解决方案。这不是一个简单的 ORDER BY :)
-
很遗憾,现在画面更不清晰了。除了
Priority列之外,您的预期输出似乎没有在任何列上排序。 -
@Damien_The_Unbeliever 在
Amount并列的情况下,Case按升序 顺序排序。非常好的捕获(难怪你超过 100K)。 -
@Damien_The_Unbeliever - 非常好的收获 - ((难怪你超过 100K) :-D
标签: sql sql-server group-by sql-order-by