【发布时间】:2018-07-18 18:43:23
【问题描述】:
我想要一个选择查询,它返回我当天的所有行,前提是“金额”与前几天不同。
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
【问题讨论】:
-
这与您昨天发布的问题完全相同。 stackoverflow.com/questions/51385491/…我们看不到你的屏幕或读懂你的想法。 “不起作用”是什么意思?你有错误吗?结果不正确?
-
@SeanLange 结果不正确,它只是加入同一天的结果。
-
尝试在
JOIN语句上使用:s1.DateTime = DateAdd(Day,-1,s2.DateTime) AND s1.Amount <> s2.Amount。不过我会使用LEFT JOIN。如果这是该用户 ID 的第一个条目怎么办?
标签: sql sql-server