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

  • MyCyberAcademy

    MyCyberAcade

    2 EKİM 2011
  • NicoleGrippo

    NicoleGrippo

    14 Kasım 2006
  • pjtoohot

    pjtoohot

    15 NİSAN 2008