Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

T-SQL:Chọn cột dựa trên MAX (Cột khác)

Sử dụng tự nối:

Thao tác này sẽ trả về tất cả các giá trị có giá trị khóa con phù hợp, trong trường hợp có bội số.

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

Sử dụng RANK &CTE (SQL Server 2005+):

Thao tác này sẽ trả về tất cả các giá trị có giá trị khóa con phù hợp, trong trường hợp có bội số.

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

Sử dụng ROW_NUMBER &CTE (SQL Server 2005+):

Điều này sẽ trả về một hàng, ngay cả khi có nhiều hàng có cùng giá trị khóa con ...

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

Sử dụng TOP:

Điều này sẽ trả về một hàng, ngay cả khi có nhiều hàng có cùng giá trị khóa con ...

  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. Cách tạo bảng trong SQL Server

  2. WinRT System.Data - Kết nối với SQL

  3. Tạo một DIE đối tượng trong SQL Server

  4. Phiên bản mới nhất của SQL Server, Phiên bản &Lịch sử Máy chủ SQL

  5. Cách tạo Ràng buộc Duy nhất trên Nhiều Cột trong SQL Server - Hướng dẫn SQL Server / TSQL Phần 96