Использовать вид из запроса по нескольким SELECTS - PullRequest
0 голосов
/ 14 декабря 2010

У меня запрос в структуре, аналогичной приведенной ниже

SELECT blah
FROM   A, B, C
WHERE  $SOME_COMMON_IF_AND
AND    $SPECIFIC_1

UNION

SELECT blah
FROM   A, B, C, D
WHERE  $SOME_COMMON_IF_AND
AND    $SPECIFIC_2

UNION

...

В попытке сократить время запроса я пытаюсь вырезать части $ SOME_COMMON_IF_AND и спроецировать его как представление, и чтобы предложения SELECT использовали это представление в качестве базового.

Я не могу понять правильный синтаксис для этого, какие-либо предложения?

Заранее спасибо!

--- РЕДАКТИРОВАНИЕ ДЛЯ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ ---

Например:

(SELECT blah
FROM   A, B, C
WHERE  $SOME_COMMON_IF_AND)
AS WORK_TABLE_1

%$@#%$@# -- the missing link

SELECT blah
FROM   WORK_TABLE_1
WHERE  $SPECIFIC_1

UNION

SELECT blah
FROM   WORK_TABLE_1
WHERE  $SPECIFIC_2

UNION

....

Это в DB2, но я ищу общее решение SQL, исходный запрос - зверь (1000 строк +), поэтому я абстрагирую предложение WHERE. Пожалуйста, дайте мне знать, если понадобятся дополнительные разъяснения.

1 Ответ

2 голосов
/ 14 декабря 2010

То, что вы ищете, называется общим табличным выражением. Это как встроенный просмотр:

with 
work_table_1 as (
   SELECT blah
   FROM   A, B, C
   WHERE  $SOME_COMMON_IF_AND
)
SELECT blah
FROM   WORK_TABLE_1
WHERE  $SPECIFIC_1

UNION

SELECT blah
FROM   WORK_TABLE_1
WHERE  $SPECIFIC_2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...