2017-04-25 6 views
0

私は4つの複数の出力で1つのスクリプトに結合したいと思うそれらの間で変化する1つの値だけを持つ4つの同一のスクリプトを持っています。この理由は、BI Publisherは複数のスクリプト間で複数のx軸の日付を表示しないため、1つのスクリプトとしてレンダリングするようにしています。以下は、4つのすべてで同じスクリプトです:同じOracle SQLスクリプトを1つに結合しますか?

select to_char("DATA_POINT_DAILY_AVG"."DATE_OF_AVG", 'DD-MON-YY') as "DATE_OF_AVG", 
     "DATA_POINT_DAILY_AVG"."VALUE" as "DAILY_AVG_VALUE" 
from "TEST"."COMPONENT" "COMPONENT", 
     "TEST"."COMPONENT_DATA_POINT" "COMPONENT_DATA_POINT", 
     "TEST"."DATA_POINT_DAILY_AVG" "DATA_POINT_DAILY_AVG" 
where "COMPONENT"."SITE_ID" = ('123abc') 
    and "COMPONENT_DATA_POINT"."COMPONENT_ID"="COMPONENT"."ID" 
    and "COMPONENT_DATA_POINT"."NAME"='TEST_1' 
    and "DATA_POINT_DAILY_AVG"."COMPONENT_DATA_POINT_ID" = "COMPONENT_DATA_POINT"."ID" 
    and "DATA_POINT_DAILY_AVG"."SITE_ID" = "COMPONENT"."SITE_ID" 
    and "DATA_POINT_DAILY_AVG"."DATE_OF_AVG" between ('01-FEB-17') and ('28-FEB-17') 
order by "DATA_POINT_DAILY_AVG"."DATE_OF_AVG" desc; 

4つのスクリプトの間で変動する唯一の行は次のとおりです。

:4つのすべて(すなわち、)のために、以下のようになり

and "COMPONENT_DATA_POINT"."NAME"='TEST_1' 

and "COMPONENT_DATA_POINT"."NAME"='TEST_1' 
    and "COMPONENT_DATA_POINT"."NAME"='TEST_2' 
    and "COMPONENT_DATA_POINT"."NAME"='TEST_3' 
    and "COMPONENT_DATA_POINT"."NAME"='TEST_4' 

他のすべてが同一である...予想される出力は次のようになります。

DATE_OF_AVG   DAILY_AVG_VALUE_1   DAILY_AVG_VALUE_2   DAILY_AVG_VALUE_3   DAILY_AVG_VALUE_4 
-----------   -----------------   -----------------   -----------------   ----------------- 
06-FEB-17       0       0       0       0 
05-FEB-17       0       0       0       0 
04-FEB-17       0       0       0       0 
03-FEB-17       0       0       0       0 
02-FEB-17       0       0       0       0 
01-FEB-17       0       0       0       0 

1つの日付列。さまざまな "TEST_x"値に基づいて4つの異なる値があります。

これは意味があると思いますが、どんな助けでも大歓迎です。ありがとう!

答えて

0

は、この文字列で検索してください:

select "COMPONENT_DATA_POINT"."NAME", 
     to_char("DATA_POINT_DAILY_AVG"."DATE_OF_AVG", 'DD-MON-YY') as "DATE_OF_AVG", 
     "DATA_POINT_DAILY_AVG"."VALUE" as "DAILY_AVG_VALUE" 
from "TEST"."COMPONENT" "COMPONENT", 
     "TEST"."COMPONENT_DATA_POINT" "COMPONENT_DATA_POINT", 
     "TEST"."DATA_POINT_DAILY_AVG" "DATA_POINT_DAILY_AVG" 
where "COMPONENT"."SITE_ID" = ('123abc') 
    and "COMPONENT_DATA_POINT"."COMPONENT_ID"="COMPONENT"."ID" 

    and "COMPONENT_DATA_POINT"."NAME" IN ('TEST_1','TEST_2','TEST_3','TEST_4') 

    and "DATA_POINT_DAILY_AVG"."COMPONENT_DATA_POINT_ID" = "COMPONENT_DATA_POINT"."ID" 
    and "DATA_POINT_DAILY_AVG"."SITE_ID" = "COMPONENT"."SITE_ID" 
    and "DATA_POINT_DAILY_AVG"."DATE_OF_AVG" between ('01-FEB-17') and ('28-FEB-17') 
order by "COMPONENT_DATA_POINT"."NAME", 
      "DATA_POINT_DAILY_AVG"."DATE_OF_AVG" desc; 

が、それはこのように結果を生成します:

NAME DATE_OF_AVG   DAILY_AVG_VALUE_1   DAILY_AVG_VALUE_2   DAILY_AVG_VALUE_3   DAILY_AVG_VALUE_4 
---- -----------   -----------------   -----------------   -----------------   ----------------- 
TEST1  06-FEB-17       0       0       0       0 
TEST1  05-FEB-17       0       0       0       0 
.... 
.... 

TEST2  06-FEB-17       0       0       0       0 
TEST2  05-FEB-17       0       0       0       0 
.... 
.... 
TEST3  06-FEB-17       0       0       0       0 
TEST3  05-FEB-17       0       0       0       0 
.... 
.... 
+0

ありがとうございました!それはあなたが説明したように働いた! – Fadiddy

+0

これはデータをピボットしていますか?私はそれがどうやっているのかわからない、あなたはクエリのいくつかのexplanaitionを与えることができますか? – JeromeFr

関連する問題