Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przetłumaczyć sprzężenie MySQL na składnię SQL Server?

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

W ten sposób powinieneś to zrobić w SQL Server. To sprawia, że ​​„ostatnia/pierwsza/maksymalna/min/największa-n-na grupę” jest dziecinnie prosta.

PARTITION BY słowo kluczowe jest tutaj równe GROUP BY oświadczenie i ORDER BY tutaj przetłumaczyłoby się na MAX funkcja agregująca używana w MySQL

Użycie tego umożliwiłoby ci robienie wymyślnych rzeczy, takich jak:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz różne kombinacje z dwóch kolumn

  2. GROUP BY - nie grupuj NULL

  3. PHP generuje dynamiczną wstawkę PDO

  4. host „localhost” nie może połączyć się z tym serwerem MySQL (#1130)

  5. mysql znajdź najmniejszy + unikalny identyfikator dostępny