2016-11-23 50 views
1

我有兩個表,表1中包含四和本週的價值和表2中包含的數據,我想從表1
表明基於價值四強四數據例如基於來自其他表值獲得最後四個四數據

表1(將只有單排)

Week Quater 
W3  Q22015 

表2

Quater Column1 ColumnN 
Q12015 X11  Y11 
Q12014 X1  Y1 
Q22014 X2  Y3 
Q32014 X3  Y4 
Q42014 T1  Y5 
Q42013 3  Y7 
Q32013 5  7 
Q22013 6  8 

輸出數據(表1,因爲有Q22015小號Ø最後四個季度的數據將是

Q12015 
Q42014 
Q32014 
Q22014 

表3

Quater Column1 ColumnN 
Q12015 X11  Y11 
Q22014 X2  Y3 
Q32014 X3  Y4 
Q42014 T1  Y5 

也可以本人申請過濾器在兩個四和本週如果我的表有一週還喜歡W1,W2,W3等比我想展示過去四個季度加高達周的數據進行數據是提在表1

感謝

+0

結果我會與固定數據開始。 'Q12015'並不代表四分之一,因爲它沒有那種自然的好方法,而「Q」是沒有必要的。任何解決方案將是一個'SUBSTRING'怪物。我建議存儲爲'YYYYQ':第1季2015年'20151',第二季度2015年'20152'等類似的問題與周,其中「W」是沒有必要的。 –

+0

吉布斯你好,謝謝,是的你是對的,但實際上我只能寫SELECT語句 – Russel

回答

0

你應該存儲值quarted在最適當的方式進行一個簡單的選擇 但站在實際情況,你可以操縱字符串並選擇這種方式

select Quater , Column1 , ColumnN 
    from my_table 
    where concat(substr(quater, -4), substr(quater,2,1))<= 
      (select concat(substr(quater, -4), substr(quater,2,1) from table1) 
    and rownum <5 
    order concat(substr(quater, -4), substr(quater,2,1)) 

並獲得所有相關的最後4四

select Quater , Column1 , ColumnN 
from my_table 
where quater in (

    select quater from my_table 
    where concat(substr(quater, -4), substr(quater,2,1)) <= 
       (select concat(substr(quater, -4), substr(quater,2,1) from table1) 
    and rownum <5 
    order concat(substr(quater, -4), substr(quater,2,1)) 
) 
order concat(substr(quater, -4), substr(quater,2,1)) 
+0

嗨scaisEdge,謝謝,限4不(通過查詢工作,直到順序)的工作,並Oracle支持限制 – Russel

+0

@Russel ..correct答案更新與Oracle上使用的rownum – scaisEdge

+0

scaisEdge嗨過濾器,它給我前4行,其中我的要求是讓所有的數據基礎上在表1的值最後四個季度(我可能millinos reocrd在我的表,它可能考慮過去10年的數據),但你已經給了我一些起點,我會嘗試使用它來獲得我需要的東西。 – Russel