sql两张表关联按表日期取最近
生活随笔
收集整理的這篇文章主要介紹了
sql两张表关联按表日期取最近
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
需求:按照兩個表的日期找到相對應b表的結束時間減去b表的開始時間查詢相關相減的值,
在關聯a表最接近b開始的時間進行關聯
? ? ? ? ? ? ? ? ? ? ?
| id | time | group????????? ? ? ? | xxx |
| 1 | 2022-01-01? ? ?xx:xx:xx | 1 | xx |
| 2 | 2022-01-01? ? ?xx:xx:xxxx | 2 | x'x'xxx |
| tstate | state |
| 2022-01-01? ? ?xx:xx:xx | 1? ? ? ? 結束???????? |
| 2022-01-01? ? ?xx:xx:xx | 0? ? ? ? ? 開始 |
1.用b表的結束時間減去b表的時間查詢相關相減的值。
使用lag開窗函數進行處理,取下一條 然后在取值時候取mod(2=0)的數據 ,注意開窗使用的字段是否正確,
select? row_number() over (partion by xx over by xx) rn
from?
(select? state, lag(time,1) over (partion by xxx over by xx? ) state1??from dual where state != state1)--這里是清洗數據?? ,由于開始結束有錯誤的有連續? 111 或者 00這種去掉
where mod(rn,2)? --由于lag函數 只是需要取取模2等0的偶數數據
2.由于要關聯表a 找最近數據
使用min獲取時間或者max獲取時間
?
?
總結
以上是生活随笔為你收集整理的sql两张表关联按表日期取最近的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小程序画布之CanvasContext
- 下一篇: html5 矢量 插件,Sketchpa