Shrnutí: v tomto tutoriálu, se dozvíte o společné tabulka výraz, nebo CTE v serveru SQL Server pomocí WITH
klauzule.
Úvod do CTE v SQL Serveru
CTE je zkratka pro Common table expression. CTE umožňuje definovat dočasnou pojmenované sady výsledků, které jsou nabízeny jak dočasně, při výkonu působnosti prohlášení, například SELECT
INSERT
UPDATE
DELETE
nebo MERGE
.,
následující ukazuje společné syntaxe CTE v SQL Serveru:
Code language: SQL (Structured Query Language) (sql)
V této syntaxi:
- za Prvé, zadejte název výrazu (
expression_name
), na které můžete odkazovat později v dotazu. - dále zadejte seznam sloupců oddělených čárkami za název_expression_name. Počet sloupců musí být stejný jako počet sloupců definovaných v
CTE_definition
. - poté použijte klíčové slovo AS za názvem výrazu nebo seznamem sloupců, pokud je zadán seznam sloupců.,
- Po, definujte
SELECT
příkaz, jehož sada výsledků vyplňuje společný výraz tabulky. - Konečně, vztahují se na společné tabulka výraz v dotazu (
SQL_statement
), napříkladSELECT
INSERT
UPDATE
DELETE
neboMERGE
.
raději používáme běžné výrazy v tabulce, než abychom používali subqueries, protože běžné výrazy v tabulce jsou čitelnější., Používáme také CTE v dotazech, které obsahují analytické funkce (nebo funkce okna)
SQL Server CTE příklady
Vezměme si některé příklady použití běžných výrazů tabulky.
A) Jednoduché SQL Server CTE příklad
Tento dotaz používá CTE vrátit prodejní částky z prodeje štáby v roce 2018:
následující obrázek ukazuje výsledek nastavení:
V tomto příkladu:
- Nejprve jsme definovali
cte_sales_amounts
jak už název společné tabulka výraz., CTE vrátí výsledek, že se skládá ze tří sloupcůstaff
year
sales
odvozen z definice dotazu. - za Druhé, vytvořili jsme dotaz, který vrátí celkovou částku prodeje prostřednictvím prodejní personál a rok pomocí dotazu data od
orders
order_items
staffs
tabulky. - za třetí jsme ve vnějším dotazu označili CTE a vybrali pouze řádky, jejichž rok je 2018.,
poznamenal, že tento příklad je pouze pro demonstrační účel, který vám pomůže postupně pochopit, jak běžné výrazy tabulky fungují. Existuje optimálnější způsob, jak dosáhnout výsledku bez použití CTE.
B) Použití společné tabulka výraz, aby se zpráva průměry na základě počítá
Tento příklad používá CTE vrátit průměrný počet prodejních objednávek v roce 2018 pro všechny prodejní personál.
výstup:
Code language: SQL (Structured Query Language) (sql)
V tomto příkladu:
za Prvé, jsme použili cte_sales
jak už název společné tabulka výraz., Přeskočili jsme seznam sloupců CTE, takže je odvozen z definice CTE. V tomto příkladu obsahujestaff_id
aorder_count
sloupce.
za druhé, pomocí následujícího dotazu definujeme sadu výsledků, která vyplňuje společný výraz tabulky cte_sales
. Dotaz vrací počet objednávek v roce 2018 prodejními pracovníky.
za třetí, odkazujeme na cte_sales
ve vnějším prohlášení a pomocí funkce AVG()
získáte průměrnou prodejní objednávku všemi štáby.,
Code language: SQL (Structured Query Language) (sql)
C) Použití více SQL Server CTE v jednom dotazu příklad:
následující příklad používá dva CTE cte_category_counts
cte_category_sales
vrátit počet produktů a prodeje pro každý produkt, kategorie. Vnější dotaz spojuje dva CTE pomocí sloupcecategory_id
.,
Zde je výsledek:
V tomto kurzu jste se naučili, jak používat běžné výrazy tabulka nebo CTE v SQL Server vytvořit složité dotazy v snadný-k-rozumět způsobem.