2016-11-23 4 views
1
私は2つのテーブルを持っている

、TABLE1がQUATERと週値が含まれており、表2は、私は、たとえばTABLE1
からの値に基づいて、最後の4件のQUATERデータを表示したい場合は、データが含まれているは、他のテーブルからの値に基づいて、最後の4つのQUATERデータを取得

表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 

出力データ(TABLE1はQ22015秒を持っているので、 O最後の4つの四半期のデータは、私のテーブルは、私が表示したいよりもW1、W2、W3などのように週を持っている場合にも、私はQUATER週の両方にフィルタを適用することができます

Q12015 
Q42014 
Q32014 
Q22014 

表3

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

になりますあなたは簡単に選択ための最も適切な方法でquartedの値を格納する必要がTABLE1に言及している点で最大一週間過去4四半期のプラスのデータ

おかげ

+0

に関連するすべての結果を取得するために私がデータを修正し始めるだろうことができます。 'Q12015'は自然にソートされないので四半期を表現するうえで素晴らしい方法ではなく、" Q "は必要ありません。どんな解決策も 'SUBSTRING'モンスターになります。 2015年の第1四半期は20151、第2四半期の2015年は20152などのように「YYYYQ」として保管することをお勧めします。「W」は必要ない週の同様の問題です。 –

+0

こんにちはギブス、ありがとう、はい、あなたは正しいですが、実際には私は選択文を書くことができます – Russel

答えて

0

のためのデータしかし立って実際の状況は、あなたは、文字列を操作し、このよう

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 QUATER

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は動作していません(クエリによって動作するまで)、オラクルサポートLimit – Russel

+0

@Russel ..correct answer updated oracleはローブのフィルタに使用されています – scaisEdge

+0

こんにちはscaisEdge、それは私の要件として、私のテーブルにmillinos reocrdを持っている可能性がありますテーブル1の値に基づいて最後の4分の1のすべてのデータを取得していますあなたが私に必要なものを得るためにそれを使用しようとします。 – Russel

関連する問題