összefoglaló: ebben az oktatóanyagban a WITH
záradék használatával megismerheti a közös tábla kifejezést vagy CTE-t az SQL Serverben.
Bevezetés a CTE SQL Server
CTE jelentése közös tábla kifejezés. A CTE lehetővé teszi egy ideiglenes elnevezett eredménykészlet meghatározását, amely ideiglenesen elérhető egy olyan nyilatkozat végrehajtási hatókörében, mint például a SELECT
, INSERT
, UPDATE
, DELETE
vagy MERGE
.,
az alábbiak a CTE általános szintaxisát mutatják az SQL Serverben:
Code language: SQL (Structured Query Language) (sql)
ebben a szintaxisban:
- először adja meg a kifejezés nevét (
expression_name
), amelyre később hivatkozhat egy lekérdezésben. - Ezután adja meg a vesszővel elválasztott oszlopok listáját az expression_name után. Az oszlopok számának meg kell egyeznie a
CTE_definition
– ban meghatározott oszlopok számával. - ezután használja a AS kulcsszót a kifejezés neve vagy oszloplista után, ha az oszloplista meg van adva.,
- után, határozza meg a
SELECT
nyilatkozatot, amelynek eredménykészlete feltölti a közös táblázat kifejezést. - végül olvassa el a közös táblázat kifejezést egy lekérdezésben (
SQL_statement
), például:SELECT
,INSERT
,UPDATE
,DELETE
, vagyMERGE
.
inkább a közös táblázatkifejezéseket használjuk, mint az alkeretek használatát, mivel a közös táblázatkifejezések olvashatóbbak., A CTE-t olyan lekérdezésekben is használjuk, amelyek analitikus funkciókat (vagy ablakfunkciókat) tartalmaznak
SQL Server CTE példák
Vegyünk néhány példát a közös táblázatkifejezések használatára.
A) Egyszerű SQL Server CTE példa
Ez a lekérdezés használ CTE vissza az értékesítési összegek által értékesítési vezérkar 2018-ban:
A következő képet mutatja az eredményt, állítsa be:
ebben A példában:
- Első, meghatározott
cte_sales_amounts
a neve, a közös asztal kifejezést., a CTE olyan eredményt ad vissza, amely három oszlopból áll:staff
,year
, éssales
. - másodszor, elkészítettünk egy lekérdezést, amely az értékesítési személyzet és az év teljes értékesítési összegét adja vissza a
orders
,order_items
ésstaffs
táblázatok adatainak lekérdezésével. - harmadszor, a külső lekérdezésben a CTE-re utaltunk, és csak azokat a sorokat választottuk ki, amelyek éve 2018.,
megjegyezte, hogy ez a példa kizárólag a demonstrációs célra szolgál, hogy segítsen fokozatosan megérteni, hogyan működnek a közös táblázatkifejezések. Az eredmény elérésének optimálisabb módja a CTE használata nélkül.
B) a közös táblázat kifejezés, hogy jelentés átlagok alapján számít
Ez a példa a CTE, hogy visszatérjen az átlagos eladási megbízások száma 2018-ban az összes értékesítési vezérkar.
itt van a kimenet:
Code language: SQL (Structured Query Language) (sql)
ebben a példában:
először a cte_sales
mint a közös tábla kifejezés neve., Kihagytuk a CTE oszloplistáját, így a CTE definíció utasításából származik. Ebben a példában a staff_id
és order_count
oszlopok szerepelnek.
másodszor, a következő lekérdezést használjuk annak az eredménykészletnek a meghatározására, amely a cte_sales
közös tábla kifejezést tölti be. A lekérdezés visszaadja a megrendelések számát 2018-ban az értékesítési személyzet által.
harmadszor, a cte_sales
– ra hivatkozunk a külső nyilatkozatban, és a AVG()
függvény segítségével kapjuk meg az összes alkalmazott átlagos eladási megbízását.,
Code language: SQL (Structured Query Language) (sql)
C) több SQL Server CTE használatával egyetlen lekérdezési példában
a következő példa két CTE cte_category_counts
és cte_category_sales
a termékek számának és az egyes termékkategóriák értékesítésének visszaadásához. A külső lekérdezés két CTE-t csatlakoztat a category_id
oszlop segítségével.,
Itt van az eredmény set:
ez A bemutató, megtanultuk, hogyan kell használni a közös asztal kifejezések vagy CTE az SQL Server építeni összetett lekérdezések egy könnyen érthető módon.