Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Vereinfachen Sie die SQL-Anweisung durch die Verwendung von CTE

Verwenden Sie CROSS APPLY , die verwendet werden können, um Alias-Felder zu definieren und dann auf sie zu verweisen:

SELECT A.a, 
       A.b, 
       B.c,
       CalculatedValue,
       B.d
FROM    
       dbo.TableA A 
INNER JOIN
        dbo.TableB B 
        ON (...)
CROSS APPLY 
        (SELECT (CASE WHEN ... THEN ... ELSE ... END)) CxA(CalculatedValue)
WHERE CalculatedValue BETWEEN @DayStart AND @DayEnd
GROUP BY A.a, CalculatedValue, B.c

Der CxA ist nur ein Alias ​​und Sie können ihm einen beliebigen Namen geben.