Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

T-SQL:Избор на колона въз основа на MAX (друга колона)

Използване на самостоятелно присъединяване:

Това ще върне всички стойности със стойности на подключ, които съвпадат, в случай че има кратни.

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

Използване на RANK &CTE (SQL Server 2005+):

Това ще върне всички стойности със стойности на подключ, които съвпадат, в случай че има кратни.

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 (SQL Server 2005+):

Това ще върне един ред, дори ако има повече от един със същата стойност на подключ...

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:

Това ще върне един ред, дори ако има повече от един със същата стойност на подключ...

  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. 3 начина за връщане на всички таблици БЕЗ първичен ключ в SQL Server

  2. Автоматизиране на обработката на табличен модел на бази данни на услугите за анализ (SSAS) в SQL Server

  3. Автоматично увеличаване на първичния ключ в SQL Server Management Studio 2012

  4. Как да използвам каскадно изтриване със SQL Server?

  5. Моята заявка Select SUM връща нула. Трябва да върне 0