SORU
23 EYLÜL 2008, Salı


Yok Matematik gibi iki değer alır SQL Server Max fonksiyonu.Max .NET?

Bu gibi bir sorgu yazmak istiyorum:

SELECT o.OrderId, MAX(o.NegotiatedPrice, o.SuggestedPrice)
FROM Order o

Ama bu MAX fonksiyonu nasıl çalışır, değil mi? Tek bir parametre bekler ve sonra tüm satır MAX döndürür bir toplama işlevi.

Herkes biliyor benim yolumu mu?

CEVAP
25 ŞUBAT 2012, CUMARTESİ


Eğer SQL Server 2008 (veya üstü) kullanıyorsanız, o zaman bu daha iyi bir çözümdür:

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

Tüm kredi ve oy Sven's answer to a related question, "SQL MAX of multiple columns?"gitmeli < / ^ br . Bu diyorum "en iyi cevap" çünkü: . em

  1. BİRLİĞİN, PİVOT ile,kodunuzu komplike gerektirmez UNPİVOT, ve deli-uzun DAVA statments UDF.
  2. Null işleme sorunu ile rahatsız değil, onları gayet güzel işler.
  3. Kolay takas için "MAX""", "" veya"". SUM AVG MİN Birçok farklı sütunlar üzerinde toplu bulmak için herhangi bir toplama işlevi kullanabilirsiniz.
  4. Ben kullanılan isimler sınırlı değilsiniz ("" ve "Fiyat"). AllPrices yani Kendi isimleri daha kolay okunur hale getirmek için seçin ve bir sonraki adam için anlayabilirsiniz.
  5. Birden fazla toplamları SQL Server gibi: 2008 derived_tables kullanarak bulabilirsiniz< / ^ br . SELECT MAX(a) MAX(b) (DEĞERLER (1, 2), (3, 4), (5, 6), (7, 8), (9, 10) ) OLARAK Tablom(a, b)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • fouseyTUBE

    fouseyTUBE

    21 Mart 2011
  • Joe DiFeo

    Joe DiFeo

    7 AĞUSTOS 2012
  • UKF

    UKF

    2 Aralık 2009