2013-02-20 15 views
11

Ho domanda come il seguenteCome riutilizzare una query secondaria in 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 

voglio riutilizzare in qualche modo

select columns 
from result_set 
where condition_common 

Ho semplificato la query di cui sopra, ma quanto sopra selezionare in realtà è enorme e complicato. Non voglio avere l'onere di assicurarmi che entrambi siano sincronizzati

Non ho alcun modo di riutilizzarlo a livello di programmazione. T-SQL è escluso. Posso solo scrivere query semplici. Questa è una limitazione dell'app.

Esiste un modo per riutilizzare lo stesso subquery, in un unico prospetto

+0

Con PLSQL volevo dire solo la capacità usare variabili, procedure, ecc. Qual è il gergo corretto per questo? – Schu

+0

Grazie. Corretto – Schu

+0

Possibile duplicato di [È possibile riutilizzare le subquery?] (Https://stackoverflow.com/questions/2686919/is-possible-to-reuse-subqueries) –

risposta

21

Utilizzare un Common Table Expression (CTE) se si utilizza 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

Grazie mille. Ciò ha ridotto il mio LOC di quasi il 40%. – Schu

Problemi correlati