2017-04-25 81 views
0

我有四個相同的腳本,只有一個值會根據它們的不同而有所不同,我希望將它們合併到一個具有四個多個輸出的腳本中。原因是BI Publisher不會在多個腳本之間呈現多個x軸日期,所以我試圖讓它呈現爲一個腳本。以下是四個相同的腳本:將相同的Oracle SQL腳本合併爲一個?

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; 

這四個腳本之間變化的唯一路線是:

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 

一個日期列,具有基於各種「TEST_x」值的四個不同值。

我希望這是有道理的,任何幫助將不勝感激。謝謝!

回答

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

這是擺動數據嗎?我不明白它是如何做到的,你能否給出一些解釋的解釋? – JeromeFr