我想要一个select查询,它返回当前日的所有行,只有当'amount'与前几天不同时才会返回。
sales
-id
-user_id
-amount
-datetime
sales表每天为每个user_id获取一条新记录。
示例场景如下:
5 123 700 2017/01/05
4 123 500 2017/01/04
3 123 1500 2017/01/03
2 123 1500 2017/01/02
1 123 500 2017/01/01
因此,如果您在1月5日搜索记录,您将获得1行,因为它与前几天不同(700对500)。
结果:
5 123 700 2017/01/05
但是如果你在3日运行查询,因为$ 1500的金额与2日相同,你将得到0结果。
我有这个基本的连接,但我需要以某种方式比较s1的当前天数行,并将其与前一天的金额值进行比较。
select s1.*
from sales as s1
inner join sales s2 on s1.user_id = s2.user_id and s1.datetime = s2.datetime
你基本上有查询。你只需要日期算术:
select s.*
from sales s left join
sales sprev
on sprev.user_id = s.user_id and sprev.datetime = dateadd(day, -1, s.datetime)
where s.datetime = '2018-01-05' and
(s.amount <> sprev.amount or sprev.amount is null);