您好我想比较几行并检查某个条件是否为真/假。 这些表有几列,我感兴趣的是:
区域ID可以是1或2。
我想在指定日期/时间差异的10分钟内检查相同的badgeno寄存器与不同地区的天气。 (可能是10分钟之前或10分钟之后)。
我希望显示没有针对2个地区的记录的记录。
进一步说明,它应该只在每天的徽章的第一个和最后一个记录内。 通常,每条记录在开头和结尾都应该有一个区域1和2记录。但是当天可能有多个地区1。
有关最佳方法的建议吗?
Id日期时间名称Badgeid Region
3385033 27/02/2014 08:16:11 FirstName姓氏5304 2
答案 0 :(得分:0)
我觉得这样的事情会起作用
SELECT e.Badgeno,e.Name, e.Date, e.Time,e.Region_id, e.Data
FROM events e
INNER JOIN events e1 ON e1.BadgeNo = e.BadgeNo AND e1.Region_id <> e.RegionId AND DATEDIFF(minutes,e1.date + e1.time,e.date + e.time) > -10 AND DATEDIFF(minutes,e1.date + e1.time,e.date + e.time) < 10
WHERE e1.Region_id IS NULL
答案 1 :(得分:-1)
你应该提供样本数据。
此查询未完成,您可以尝试使用 row_number / rank / dense,partition和check因此编号列 生成。
select *,
row_number()over(partition by badgeno,regionno order by badge no)rn from table
where condition of date time