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

Có hàm Max trong SQL Server nhận hai giá trị như Math.Max ​​trong .NET không?

Nếu bạn đang sử dụng SQL Server 2008 (trở lên), thì đây là giải pháp tốt hơn:

SELECT o.OrderId,
       (SELECT MAX(Price)
        FROM (VALUES (o.NegotiatedPrice),(o.SuggestedPrice)) AS AllPrices(Price))
FROM Order o

Tất cả tín dụng và phiếu bầu sẽ chuyển đến câu trả lời của Sven cho một câu hỏi liên quan, "SQL MAX có nhiều cột?"
Tôi nói đó là " câu trả lời hay nhất "bởi vì:

  1. Nó không yêu cầu làm phức tạp mã của bạn với các trạng thái của UNION, PIVOT, UNPIVOT, UDF và các trạng thái CASE dài điên cuồng.
  2. Nó không gặp khó khăn với vấn đề xử lý null, nó xử lý chúng tốt.
  3. Thật dễ dàng hoán đổi "MAX" với "MIN", "AVG" hoặc "SUM". Bạn có thể sử dụng bất kỳ hàm tổng hợp nào để tìm tổng hợp trên nhiều cột khác nhau.
  4. Bạn không bị giới hạn đối với những tên tôi đã sử dụng (tức là "Tất cả" và "Giá"). Bạn có thể chọn tên riêng của mình để dễ đọc và dễ hiểu cho người kế tiếp.
  5. Bạn có thể tìm thấy nhiều tổng hợp bằng cách sử dụng các bảng dẫn xuất của SQL Server 2008 như sau:
    SELECT MAX (a), MAX (b) FROM (VALUES (1, 2), (3, 4), (5, 6) , (7, 8), (9, 10)) AS MyTable (a, b)


  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ó cách nào để truy cập giá trị hàng trước đó trong câu lệnh SELECT không?

  2. Excel 32-bit và SQL Server 64-bit

  3. Chuyển đổi ‘datetime’ thành ‘smalldatetime’ trong SQL Server (Ví dụ T-SQL)

  4. Cập nhật hàng loạt trong C #

  5. Cắt ngắn (không làm tròn) các vị trí thập phân trong SQL Server