niedziela, 6 października 2013

[SQL] T-SQL: Common Table Expression

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