CTE występuje tylko w Transact - SQL-u i można go nazwać tymczasowym wynikiem otrzymanym w wyniku jednego zapytania na potrzebny innej operacji. Rozwiązanie takie poprawia czytelność dużych zapytań i może być wykorzystane w różnych sytuacjach:
- zapytania rekurencyjne
- odwoływanie się do jakiegoś wyniku wielokrotnie (dzięki nazwanemu CTE odwołujemy się do nazwy)
- grupowanie wynikające z pewnych operacji agregujących
Poniżej przykład użycia Common Table Expression.
USE Cars;
GO
WITH Rated_Cars_CTE (Make, Score, Price)
AS
( SELECT Marka, ISNULL([Ocena subiektywna],0) +
ISNULL([Ocena subiektywna],0), [Cena 2008]
FROM dbo.Cars
WHERE [Cena 2008] IS NOT NULL)
SELECT t.RANGE AS [Score Range], count(*) AS [Number of Occurences]
FROM (
SELECT CASE
WHEN score between 0 and 1 THEN ' 0- 1'
WHEN score between 1 and 2 THEN ' 1- 2'
WHEN score between 2 and 3 THEN ' 2- 3'
WHEN score between 3 and 4 THEN ' 3- 4'
WHEN score between 4 and 5 THEN ' 4- 5'
WHEN score between 5 and 6 THEN ' 5- 6'
WHEN score between 6 and 7 THEN ' 6- 7'
WHEN score between 7 and 8 THEN ' 7- 8'
WHEN score between 8 and 9 THEN ' 8- 9'
WHEN score between 9 and 10 THEN ' 9- 10'
ELSE '10+' END AS RANGE
FROM Rated_Cars_CTE) t
GROUP BY t.RANGE
Brak komentarzy:
Prześlij komentarz