[MSSQL] Operacje na aliasie kolumny w SELECT

[MSSQL] Operacje na aliasie kolumny w SELECT
JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5046
0

Cześć, mam pytanie, na które odpowiedzi nie mogę znaleźć(chociaż spotkałem się z opinią, że to niemożliwe, ale wierzyć mi się nie chce).

Otóż, chcę przeprowadzić pewne operacje na aliasie w zapytaniu select, wygląda to mniej więcej tak:

Kopiuj
SELECT kolumna, 
   (SELECT min(kol) from tabela where blablablabla) as a,
   (select max(kol) from tabela where blablabla) as b,
   dbo.moja_funkcja(datediff(second, a, b)
from tabela

MSSQL krzyczy, że nie ma kolumn a i b. Da się to jakoś mądrze zrobić?

johny_bravo
  • Rejestracja: dni
  • Ostatnio: dni
0

Na aliasie raczej sie nie da, ale mozesz zrobic te podzapytania jako funkcje. Silnik i tak nie powinien tego dwa razy wyciagac, tylko pobrac z cache'a, ew. zoptymalizowac zapytanie.

crowa
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 295
0
Kopiuj
SELECT T.kolumna, T.a, T.b, dbo.moja_funkcja(datediff(second, T.a, T.b)
FROM
(
SELECT kolumna, 
   (SELECT min(kol) from tabela where blablablabla) as a,
   (select max(kol) from tabela where blablabla) as b,
FROM tabela
) T

sprobuj moze pomoze

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.