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 ;

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.