第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Oracle SQL 如何實現(xiàn)流水?dāng)?shù)據(jù)轉(zhuǎn)換為時間區(qū)間數(shù)據(jù)?

Oracle SQL 如何實現(xiàn)流水?dāng)?shù)據(jù)轉(zhuǎn)換為時間區(qū)間數(shù)據(jù)?

慕慕森 2018-08-16 18:33:55
有采購流水?dāng)?shù)據(jù):PUR_ODRER(WH,ITEM,PRICE,IN_DATE)對應(yīng)倉庫,商品,價格,日期?,F(xiàn)在想將商品的價格波動存成時間區(qū)間數(shù)據(jù):PUR_PRC_HIST(WH,ITEM,PRICE,START_DATE,END_DATE)對于倉庫,商品,價格,開始日期,結(jié)束日期。如何用SQL獲得新的結(jié)果集?
查看完整描述

2 回答

?
郎朗坤

TA貢獻1921條經(jīng)驗 獲得超9個贊

Oracle 思路:

1、使用lag()進行行間比較,使用flag標(biāo)識,相同置零,不同置1
2、使用sum(flag),標(biāo)識區(qū)間
3、使用max(date),獲取時間區(qū)間

注:先理解窗口函數(shù)
參考SQL Cookbook 章節(jié):10.3


查看完整回答
反對 回復(fù) 2018-08-26
?
Smart貓小萌

TA貢獻1911條經(jīng)驗 獲得超7個贊

給你個思路:

1、按照品類,日期排序,2、對排完序的數(shù)據(jù)進行標(biāo)號處理,當(dāng)品類或者價格發(fā)生變動時,標(biāo)號+1,3、然后按照品類,價格和標(biāo)號進行分組,獲取最小日期和最大日期就是你的價格波動區(qū)間

思路就是這樣,這里有個mysql版本的sql,你自己改成Oracle版本即可,或者Oracle可能有更高級的現(xiàn)成的功能可以用,我就不清楚了:

select ITEM, PRICE,min(IN_DATE) start_date,max(IN_DATE) end_date 

from (

    select 

        @gn:=case when @ITEM<>ITEM or @PRICE<>PRICE then @gn+1 else @gn end gn,

        @ITEM:=ITEM ITEM,

        @PRICE:=PRICE PRICE,

        IN_DATE

    from 

        (select ITEM,PRICE,IN_DATE 

         from PUR_ODRER 

         order by ITEM, IN_DATE) a,

        (select @gn:=0) b

) aa 

group by ITEM, PRICE,gn

order by gn;


查看完整回答
反對 回復(fù) 2018-08-26
  • 2 回答
  • 0 關(guān)注
  • 974 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號