sql >> Databáze >  >> RDS >> Mysql

Přeložit spojení MySQL do syntaxe SQL Serveru?

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

Toto je způsob, jakým byste to měli udělat v SQL Server. Díky tomu je „poslední/první/max/min/největší-n-na skupinu“ snadné jako facka.

PARTITION BY klíčové slovo se zde rovná vaší GROUP BY a příkaz ORDER BY zde by se převedlo do MAX agregační funkce, kterou jste použili v MySQL

Použití tohoto by vám umožnilo dělat některé fantastické věci, jako je:

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. Připojení k MySQL z .NET pomocí SSH.NET Library

  2. mysql Neplatný počet sloupců ve vstupu CSV při importu souboru csv

  3. Spouštěče SQL Serveru - pořadí provádění

  4. Jak získat druhý nejnovější řádek z mysql?