sql >> Databasteknik >  >> RDS >> Sqlserver

T-SQL:Välja kolumn baserat på MAX(Annan kolumn)

Använda en självanslutning:

Detta kommer att returnera alla värden med undernyckelvärden som matchar, om det finns multipler.

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

Använda RANK &CTE (SQL Server 2005+):

Detta kommer att returnera alla värden med undernyckelvärden som matchar, om det finns multipler.

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

Med ROW_NUMBER och CTE (SQL Server 2005+):

Detta kommer att returnera en rad, även om det finns fler än en med samma undernyckelvärde...

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

Med TOP:

Detta kommer att returnera en rad, även om det finns fler än en med samma undernyckelvärde...

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


  1. Hur kan jag ändra standardtidsgränsen för Mysql-anslutningen när jag ansluter via python?

  2. SQL Server pivot kontra multipel koppling

  3. MariaDB JSON_DEPTH() Förklarad

  4. Hur man tar bort rätt stoppning på dagnamnet i Oracle