2013-02-20 15 views
11

Mam zapytanie jak na poniższymJak ponownie użyć zapytania dodatkowego w sql?

select columns 
from (select columns1 
     from result_set 
     where condition_common and condition1) as subset1 
     join 
     (select columns2 
     from result_set 
     where condition_common and condition2) as subset2 
     on subset1.somekey = subset2.somekey 

Chcę jakoś ponowne

select columns 
from result_set 
where condition_common 

mam uproszczony powyższe zapytanie, ale powyżej wybierz w rzeczywistości jest ogromny i skomplikowany. Nie chcę mieć ciężaru upewnienia się, że oba są zsynchronizowane. Nie mam żadnych możliwości programowego ponownego użycia. T-SQL jest wykluczony. Mogę pisać tylko proste zapytania. To jest ograniczenie aplikacji.

Czy istnieje sposób na ponowne wykorzystanie tego samego podzapytania, w pojedynczej instrukcji

+0

Przez plsql ja tylko rozumie się zdolność używać zmiennych, procedur itd. Jakie jest właściwe żargon? – Schu

+0

Dziękuję. Poprawiono to. – Schu

+0

Możliwy duplikat [Czy można ponownie użyć podzapytań?] (Https://stackoverflow.com/questions/2686919/is-possible-to-reuse-subqueries) –

Odpowiedz

21

Skorzystaj z Common Table Expression (CTE), jeśli używasz SQL Server 2005+:

with cte as (
     select columns 
     from result_set 
     where condition_common 
    ) 
select columns 
from cte as subset1 
     join 
     cte as subset2 
     on subset1.somekey = subset2.somekey 
where otherconditions 
+0

Dziękuję bardzo. To zmniejszyło mój LOC o prawie 40%. – Schu

Powiązane problemy