Объединение одних и тех же SQL-скриптов Oracle в одном?

У меня есть четыре идентичных сценария, которые имеют только одно значение, которое варьируется между ними, и которое я хотел бы объединить в один сценарий с четырьмя несколькими выходами. Причиной этого является то, что BI Publisher не будет отображать несколько дат по оси X между несколькими сценариями, поэтому я пытаюсь сделать так, чтобы он отображался как один сценарий. Ниже приведен один и тот же сценарий для всех четырех:

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".

Я надеюсь, что это имеет смысл, и любая помощь будет принята с благодарностью. Спасибо!

1 ответ

Решение

Попробуйте этот запрос:

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
....
....
Другие вопросы по тегам