sql >> Database teknologi >  >> RDS >> Sqlserver

T-SQL:Valg af kolonne baseret på MAX (anden kolonne)

Brug af en selvtilmelding:

Dette vil returnere alle værdier med undernøgleværdier, der matcher, hvis der er 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

Brug af RANK &CTE (SQL Server 2005+):

Dette vil returnere alle værdier med undernøgleværdier, der matcher, hvis der er 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

Ved brug af ROW_NUMBER og CTE (SQL Server 2005+):

Dette vil returnere én række, selvom der er mere end én med samme undernøgleværdi...

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

Brug af TOP:

Dette vil returnere én række, selvom der er mere end én med samme undernøgleværdi...

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


  1. Fuldt administreret PostgreSQL-hosting på AWS og Azure lanceres i tide til ældre migreringer

  2. Returner standardresultat for IN-værdi uanset

  3. Sammenkædning af kolonneværdier til en kommasepareret liste

  4. Sådan opgraderes fra MariaDB 10.4 til MariaDB 10.5