Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apakah ada fungsi Max di SQL Server yang mengambil dua nilai seperti Math.Max ​​di .NET?

Jika Anda menggunakan SQL Server 2008 (atau lebih tinggi), maka ini adalah solusi yang lebih baik:

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

Semua kredit dan suara harus ditujukan ke jawaban Sven untuk pertanyaan terkait, "SQL MAX dari beberapa kolom?"
Saya katakan itu adalah "jawaban terbaik " karena:

  1. Tidak perlu memperumit kode Anda dengan pernyataan UNION, PIVOT,UNPIVOT, UDF, dan CASE yang sangat panjang.
  2. Ini tidak diganggu dengan masalah penanganan null, ini menanganinya dengan baik.
  3. Sangat mudah untuk menukar "MAX" dengan "MIN", "AVG", atau "SUM". Anda dapat menggunakan fungsi agregat apa pun untuk menemukan agregat pada banyak kolom berbeda.
  4. Anda tidak terbatas pada nama yang saya gunakan (yaitu "AllPrice" dan "Price"). Anda dapat memilih nama Anda sendiri agar lebih mudah dibaca dan dipahami oleh orang berikutnya.
  5. Anda dapat menemukan beberapa agregat menggunakan turunan_tabel SQL Server 2008 seperti:
    SELECT MAX(a), MAX(b) FROM (VALUES (1, 2), (3, 4), (5, 6) , (7, 8), (9, 10) ) SEBAGAI 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. Indeks Hilang SQL Server

  2. Solusi untuk INSERT ATAU UPDATE di SQL Server

  3. JSON di SQL Server

  4. Bagaimana cara memanggil Prosedur Tersimpan dalam Tampilan?

  5. Mengganti nama Tabel di SQL Server (T-SQL)