Klauzula WITH w SQL Server

Czym jest klauzula WITH w SQL Server i jak jej używamy?

Klauzula WITH w SQL umożliwia nam wyciągnięcie części skryptu przed właściwe zapytanie. Klauzuli używamy najczęściej, gdy zmieniamy nasze skrypty i nie chcemy w nich zbyt dużo namieszać. Możemy użyć ją także w poleceniu UPDATE, gdzie ma ona szersze zastosowanie. Poniżej składnia WITH używana z poleceniem SELECT:

WITH TWOJA_NAZWA as (SELECT KOLUMNY FROM TABELE WHERE WARUNKI)

SELECT KOLUMNY FROM TWOJA_NAZWA WHERE WARUNKI;

Zróbmy przykład z użyciem WITH na danych z bazy AdventureWorks.

use AdventureWorks2014
go

with aaa as (Select a.BusinessEntityID,
a.FirstName,
a.LastName,
c.City
from Person.Person a
join person.BusinessEntityAddress b on a.BusinessEntityID = b.BusinessEntityID
join person.Address c on b.AddressID = c.AddressID
where 
c.City = 'Paris')

select * from aaa
where aaa.BusinessEntityID < 10000;

Warto wiedzieć, że sam wynik zapytania będzie identyczny jak w przypadku wstawiania skryptu z klauzuli WITH w podzapytanie SQL jak w tym przykładzie:

use AdventureWorks2014 
go 

select * from 
(Select a.BusinessEntityID,
a.FirstName,
a.LastName,
c.City
from Person.Person a
join person.BusinessEntityAddress b on a.BusinessEntityID = b.BusinessEntityID
join person.Address c on b.AddressID = c.AddressID
where 
c.City = 'Paris') aaa
where aaa.BusinessEntityID < 10000
;
WITH w SQL Server
WITH w SQL Server

Dodam, że skrypt może posiadać wiele elementów WITH. Jedyne, co powinniśmy zrobić to oddzielić wyrażenia przecinkiem. Link do opisu tematu na stronie Microsoft. Ten i podobne artykuły są częścią kursu SQL Server, z którego możesz skorzystać pod tym linkiem.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *