[MSSQL] Operacje na aliasie kolumny w SELECT

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:

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ć?

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.

0
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

1 użytkowników online, w tym zalogowanych: 0, gości: 1