sql >> データベース >  >> RDS >> Sqlserver

CTEを使用してSQLステートメントを簡素化する

    CROSS APPLYを使用します 、エイリアスフィールドを定義して参照するために使用できます:

    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 は単なるエイリアスであり、好きな名前を付けることができます。



    1. IN句で指定されたすべての値に一致する行のみを選択する

    2. Oracleで10分以内に1,000万のクエリを挿入しますか?

    3. MySQLハッシュ関数の実装

    4. 後でクエリで選択した列を使用できますか?