sql >> Databáze >  >> RDS >> Sqlserver

T-SQL:Výběr sloupce na základě MAX (jiný sloupec)

Pomocí vlastního připojení:

To vrátí všechny hodnoty s hodnotami podklíče, které se shodují, v případě, že existují násobky.

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

Použití RANK &CTE (SQL Server 2005+):

To vrátí všechny hodnoty s hodnotami podklíče, které se shodují, v případě, že existují násobky.

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

Použití ROW_NUMBER &CTE (SQL Server 2005+):

To vrátí jeden řádek, i když existuje více než jeden se stejnou hodnotou podklíče...

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

Pomocí TOP:

To vrátí jeden řádek, i když existuje více než jeden se stejnou hodnotou podklíče...

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


  1. Funkce MySQL LOG() – Vrátí přirozený logaritmus hodnoty

  2. Práce s daty v PostgreSQL

  3. Jak zobrazit datum ve formátu iso 8601 pomocí PHP

  4. Proč potřebujeme klauzuli GLOB v SQLite?