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

MySQL結合をSQLServer構文に変換しますか?

    WITH Data AS
    (
     SELECT ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Date DESC) AS Row_Number,
     ID,
     AverageValue
     FROM Table
    )
    SELECT * FROM Data WHERE Row_Number = 1
    

    これは、SQLServerで行う必要がある方法です。 「last/first / max / min/greatest-n-pergroup」をパイのように簡単にします。

    PARTITION BY ここでのキーワードは、GROUP BYと同じです ステートメント、およびORDER BY ここでは、MAXに変換されます MySQLで使用した集計関数

    これを使用すると、次のような凝ったことを行うことができます。

    WITH Data AS
        (
         SELECT ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Date DESC) AS Row_Number,
         ID,
         AverageValue
         FROM Table
        )
    
    SELECT Newest.ID, 
    Newest.AverageValue, 
    (Newest.AverageValue - Next_Newest.AverageValue) AS AverageValue_Change,
    Newest.Date
     FROM Data Newest
    LEFT OUTER JOIN Data Next_Newest 
     ON Newest.Row_Number+1 = Next_Newest.Row_Number
    AND Newest.ID = Next_Newest.ID 
    
    WHERE Newest.Row_Number=1
    


    1. OracleSQLでの複数行の挿入

    2. 文字列を整数にキャストし、PostgreSQLでのキャストでエラーが発生した場合に0にする方法を教えてください。

    3. ユーザーがリンクをクリックしたときにテーブルに新しいフィールドを作成する方法

    4. 続編エラー:関係が存在しません