在多个SELECTS中使用查询查看

时间:2010-12-14 03:57:18

标签: sql db2

我的查询结构类似于下面的

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 个答案:

答案 0 :(得分:2)

您正在寻找的是一个公用表表达式。这就像有一个内联视图:

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