sql >> Database >  >> RDS >> Sqlserver

T-SQL:kolom selecteren op basis van MAX (andere kolom)

Een self-join gebruiken:

Dit retourneert alle waarden met subsleutelwaarden die overeenkomen, voor het geval er veelvouden zijn.

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

RANG &CTE gebruiken (SQL Server 2005+):

Dit retourneert alle waarden met subsleutelwaarden die overeenkomen, voor het geval er veelvouden zijn.

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

ROW_NUMBER &CTE gebruiken (SQL Server 2005+):

Dit geeft één rij terug, zelfs als er meer dan één zijn met dezelfde subsleutelwaarde...

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

TOP gebruiken:

Dit geeft één rij terug, zelfs als er meer dan één zijn met dezelfde subsleutelwaarde...

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


  1. Moet de scalaire variabele declareren

  2. Records van uur tot uur of van dag tot dag groeperen en hiaten opvullen met nul of nul

  3. Een HTML-e-mail verzenden vanuit SQL Server (T-SQL)

  4. Een gegevensmodel voor gebeurtenisbeheer