MS Access - Sloupcové aliasy

8. 1. 2013, Vladimír Klaus, přečteno 2809x

MS Access
SQL
SQL Server

Jiné pojmenování sloupce je velmi užitečné při používání agregačních funkcí. Sloupec s výsledkem takové funkce může být pojmenován třeba Expr1000, což není zrovna pěkné. Pokud použijete dokonce funkcí více, stává se takový výsledek velmi nepřehledný.

SQL obrázek

Při použití aliasů je výsledek mnohem lepší.

SELECT MIN(Castka) AS Minimum, MAX(Castka) AS Maximum,
AVG(Castka) AS Prumer, STDEV(Castka) AS VybSmerOdch
FROM Objednavky

SQL obrázek

Je třeba dát pozor ale na jednu trochu nepříjemnou věc – sloupcový alias nelze použít (na rozdíl od tabulkového) na dalších místech dotazu. Řazení výsledku dotazu dle oříznutého názvu takto realizovat nelze.

SELECT TRIM(Nazev) AS OriznutyNazev FROM Produkty ORDER BY OriznutyNazev

A musí se bohužel znovu zopakovat celá funkce.

SELECT TRIM(Nazev) AS OriznutyNazev FROM Produkty ORDER BY TRIM(Nazev)

Je tu ovšem jedna výjimka, a to v případě, že je alias použit v poddotazu.

SELECT IdZakaznika, Soucet FROM
(SELECT IdZakaznika, SUM(Castka) AS Soucet
FROM Objednavky GROUP BY IdZakaznika)
WHERE Soucet > 2000

SQL obrázek

Vysvětlení toho, proč to zde funguje, je snadné. Alias reálně vzniká až při vykonání dotazu. Zde se tedy provede nejprve vnitřní dotaz, který „vytvoří“ alias a ten pak existuje i pro vnější hlavní dotaz. V předchozím příkladu toto nebylo možné – chtěli jsme řadit podle něčeho, co ještě neexistuje.