Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

T-SQL:Wybieranie kolumny na podstawie MAX (inna kolumna)

Korzystanie z samodzielnego łączenia:

Spowoduje to zwrócenie wszystkich wartości z pasującymi wartościami podklucza, w przypadku ich wielokrotności.

SELECT a.value
  FROM TABLE a
  JOIN (SELECT MAX(t.subkey) AS max_subkey
          FROM TABLE t
         WHERE t.key = 1) b ON b.max_subkey = a.subkey
 WHERE a.key = 1

Korzystanie z RANK &CTE (SQL Server 2005+):

Spowoduje to zwrócenie wszystkich wartości z pasującymi wartościami podklucza, w przypadku ich wielokrotności.

WITH summary AS (
  SELECT t.*,
         RANK() OVER(ORDER BY t.subkey DESC) AS rank
    FROM TABLE t
   WHERE t.key = 1)
SELECT s.value
  FROM summary s
 WHERE s.rank = 1

Korzystając z ROW_NUMBER i CTE (SQL Server 2005+):

Zwróci to jeden wiersz, nawet jeśli istnieje więcej niż jeden z tą samą wartością podklucza...

WITH summary AS (
  SELECT t.*,
         ROW_NUMBER() OVER(ORDER BY t.subkey DESC) AS rank
    FROM TABLE t
   WHERE t.key = 1)
SELECT s.value
  FROM summary s
 WHERE s.rank = 1

Używając TOP:

Zwróci to jeden wiersz, nawet jeśli istnieje więcej niż jeden z tą samą wartością podklucza...

  SELECT TOP 1
         t.value
    FROM TABLE t
   WHERE t.key = 1
ORDER BY t.subkey DESC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Replikacja SQL Server wymaga rzeczywistej nazwy serwera, aby nawiązać połączenie z serwerem

  2. Przewodnik:konfigurowanie wysokiej dostępności programu SQL Server

  3. Użyj SET TEXTSIZE, aby ograniczyć dane zwracane dla każdego wiersza w SQL Server

  4. Jak zwrócić wiele zestawów wyników za pomocą SqlCommand?

  5. Jak zwrócić przyrostowy numer grupy na grupę w SQL?