2010-05-12 3 views
0

J'ai donc une base de données très volumineuse, et j'ai besoin de travailler sur un sous-ensemble de ~ 1% des données pour les exporter dans un tableur Excel. Idéalement, je pourrais sélectionner le sous-ensemble de données, puis exécuter plusieurs requêtes de sélection à ce sujet, qui sont ensuite unies ensemble. Est-ce seulement possible? Je n'arrive pas à trouver quelqu'un d'autre qui essaie de le faire et améliorerait un peu les performances de ma requête actuelle. En ce moment, j'ai quelque chose comme ceci:Oracle SQL: plusieurs sous-requêtes unies sans exécution de requête originale plusieurs fois

SELECT (
    SELECT (
      SELECT(
       long list of requirements 
     ) 
      UNION 
      SELECT(
       slightly different long list of requirements 
     ) 
    ) 
) 

et ce serait bien si je pouvais regrouper les traits communs des deux exigences de long et ont de simples différences entre les deux déclarations de sélection étant filles fusionnées.

Répondre

2

Si vous utilisez Oracle 9i ou version ultérieure, vous pouvez utiliser la factorisation de sous-requête (AKA Common Table Expression (CTE) dans SQL Server). Il utilise la syntaxe WITH:

WITH inline_view_name AS (
    SELECT * 
    FROM YOUR_TABLEs) 
SELECT 
    FROM inline_view_name a 
WHERE ... 
UNION ALL 
SELECT 
    FROM inline_view_name b 
WHERE ... 

... et peut être réutilisé comme vous le voyez dans l'exemple.

Questions connexes