sql >> Databasteknik >  >> RDS >> Sqlserver

förenkla SQL-satsen genom att använda CTE

Använd CROSS APPLY , som kan användas för att definiera aliasfält och sedan referera till dem:

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

CxA är bara ett alias och du kan namnge det vad du vill.



  1. Begränsar med DATE

  2. Unika IP:er i ett röstsystem

  3. Java Class.forName, JDBC-anslutning laddar drivrutinen

  4. Unicode-normalisering i Postgres