Subquery

giovedì 24 febbraio 2011 - 15.37
Tag Elenco Tags  Windows 7  |  SQL Server 2008 R2

dbarbieri70 Profilo | Newbie

Ciao a tutti,
sto utilizzando SQL 2008 R2. Vorrei usare un subquery senza doverla includere nel testo della query, ma solo richiamarla:

select '00-10' as Descrizione, SUM .. as Valore
from
(select sum([Numero Dipendenti]) as dipendenti
from Tmp_AttivitaDipendenti
where [Numero Dipendenti] >0
group by sh1_code) as tavola

vorrei che diventasse qualcosa tipo:

select '00-10' as Descrizione, SUM .. AS 'Valore'
from Tavola

Tavola sarebbe la sottoquery, salvata a parte. In Access è possibile, ma in SQL 2008 mi dà errore.
Suggerimenti?

Grazie,
Davide

lbenaglia Profilo | Guru

>Tavola sarebbe la sottoquery, salvata a parte. In Access è possibile,
>ma in SQL 2008 mi dà errore.

Ciao Davide,

Cosa ti dà errore?

Comunque puoi procedere in 2 modi: se la subquery deve essere memorizzata in un oggetto nel database (alla stessa stregua delle Query in Access) puoi definire una vista che andrai ad interrogare successivamente; se invece stai cercando solo un modo alternativo e forse più chiaro per "delimitare" la subquery puoi servirti di una Common Table Expression.

Si seguito i 2 esempi:

/* Esempio 1: definisco ed interrogo la vista */ CREATE VIEW dbo.vwTavola AS SELECT SUM([Numero Dipendenti]) AS dipendenti FROM Tmp_AttivitaDipendenti WHERE [Numero Dipendenti] >0 GROUP BY sh1_code; GO SELECT '00-10' AS Descrizione, SUM .. AS Valore FROM dbo.vwTavola; GO /* Esempio 2: definisco ed interrogo una CTE */ WITH CTE_Tavola AS ( SELECT SUM([Numero Dipendenti]) AS dipendenti FROM Tmp_AttivitaDipendenti WHERE [Numero Dipendenti] >0 GROUP BY sh1_code ) SELECT '00-10' AS Descrizione, SUM .. AS Valore FROM CTE_Tavola;

>Grazie,
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

dbarbieri70 Profilo | Newbie

Grazie mille Lorenzo,
ho usato la CTE e funziona benissimo,
Davide
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5