增量業(yè)務數據表 查詢繁瑣,也要避免錯誤

/*
增量業(yè)務數據表
Id 自增id
BusId 業(yè)務主鍵
DataDate 增量數據所在的日期
*/
create table #room(Id int, BusId int, BusNo varchar(100), BusCode varchar(100), BusArea decimal(10,2), ts int, DataDate datetime)
-- 數據日期2018-09-01
INSERT INTO #room (Id, BusId, BusNo, BusCode, BusArea, ts, DataDate)
VALUES ('1', '40', 'xxxxxxxxx', 'yyyyy', '22.00', '1499639', '2018-09-01 17:39:24');
-- 數據日期2018-11-01
INSERT INTO #room (Id, BusId, BusNo, BusCode, BusArea, ts, DataDate)
VALUES ('2', '40', 'xxxxxxxxx', 'yyyyy', '24.00', '1499639', '2018-11-01 17:39:24');
-- 數據日期2018-10-01,發(fā)現10.1數據遺漏,補充.id變=3
INSERT INTO #room (Id, BusId, BusNo, BusCode, BusArea, ts, DataDate)
VALUES ('3', '40', 'xxxxxxxxx', 'yyyyy', '23.00', '1499639', '2018-10-01 17:39:24');

select * from #room
--查詢2018-11-02日的最新數據

--現在實現版本,返回id=3的錯誤數據
select r.* from #room r join
(select max(id) id from #room where DataDate<='2018-11-02' group by BusId) rMax on rMax.id=r.Id

--數據正確版本,返回id=2的正確數據
-- 因為日期字段做條件會變慢,當時沒有采取
-- 建議加一列 ImportTimeTS int,對應DataDate的ts.作為條件
select r.* from #room r join
(select max(DataDate) DataDate,BusId from #room where DataDate<='2018-11-02' group by BusId) rMax
on rMax.DataDate=r.DataDate and rMax.BusId=r.BusId

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 超高速音視頻編碼器用法: ffmpeg [options] [[infile options] -i infile...
    吉兇以情遷閱讀 4,816評論 0 4
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,915評論 0 13
  • 許多時候我都像被抽離了的第三靈魂。 看著別人的故事 感慨自己的人生 把自己外向的人格以逗比的形式逼出來 漸漸潛藏了...
    紅發(fā)小矮人閱讀 279評論 0 0
  • 日精進 鄭州 堅持原創(chuàng)分享第60天 2017年8月27日 星期日 晴 兩個小家伙因為亂吐葡萄皮,被罰面壁思過.幾分...
    小蓮蓬兒閱讀 197評論 0 0
  • 舊屋破桌枯木, 黑夜圓月老樹。 昏燈冷風熱茶,
    J丶藍煙閱讀 300評論 0 1

友情鏈接更多精彩內容