【发布时间】:2019-04-06 16:29:31
【问题描述】:
我有一个包含以下列的销售表。我想选择销售价格上涨的行,并跳过上面行的销售价格上涨的那些下跌的销售价格。
例如在下表中,我希望除具有 saleid=4 的行之外的所有行
+--------+--------+-----------+
| SaleId | ItemId | SalePrice |
+--------+--------+-----------+
| 1 | 987 | 12 |
+--------+--------+-----------+
| 2 | 678 | 13 |
+--------+--------+-----------+
| 3 | 987 | 15 |
+--------+--------+-----------+
| 4 | 542 | 11 |
+--------+--------+-----------+
| 5 | 678 | 16 |
+--------+--------+-----------+
我尝试过使用内连接。但它什么也没显示。 这是我写的查询:
select s1.* from saletable s1
join saletable s2 on s1.saleid = s2.saleid
where s1.saleprice<s2.saleprice
【问题讨论】:
-
好吧,其实是MS Sql server,不过我在找通用算法
-
如果最后一行的 SalePrice = 14 怎么办?
-
它应该跳过 as saleid: 5 has a price of 16
-
不,我的意思是如果 SaleId 为 5 的行的 SalePrice 是 14 而不是 16,它应该在结果中吗?请注意,在这种情况下,它的价值高于前一个 ...
-
不,不包括,因为最后一个最大值是15
标签: sql sql-server inner-join