SORU
3 ŞUBAT 2009, Salı


Yapmak için en iyi yolu SQL Server case deyimi mantık iç içe

Şu anda sütunları döndürülen bir kaç koşulları çok bağlı olarak hesaplanacak gereken bir SQL Sorgusu yazıyorum.

Şu anda iç içe geçmiş durumda deyimleri, ama onun dağınık kullanıyorum. (Daha organize ve/veya okunabilir) daha iyi bir yolu var mı?

(Microsoft SQL Server 2005 kullanıyorum)

< / ^ hr .

Basitleştirilmiş bir örnek:

SELECT
    col1,
    col2,
    col3,
    CASE
        WHEN condition 
        THEN
            CASE
                WHEN condition1 
                THEN
                    CASE 
                        WHEN condition2
                        THEN calculation1
                        ELSE calculation2
                    END
                ELSE
                    CASE 
                        WHEN condition2
                        THEN calculation3
                        ELSE calculation4
                    END
            END
        ELSE 
            CASE 
                WHEN condition1 
                THEN 
                    CASE
                        WHEN condition2 
                        THEN calculation5
                        ELSE calculation6
                    END
                ELSE
                    CASE
                        WHEN condition2 
                        THEN calculation7
                        ELSE calculation8
                    END
            END            
    END AS 'calculatedcol1',
    col4,
    col5 -- etc
FROM table

CEVAP
3 ŞUBAT 2009, Salı


BİRLEŞİM hile, örneğin, bir çeşit deneyebilirsiniz:

SELECT COALESCE(
  CASE WHEN condition1 THEN calculation1 ELSE NULL END,
  CASE WHEN condition2 THEN calculation2 ELSE NULL END,
  etc...
)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Droid Life

    Droid Life

    17 Kasım 2009
  • Matthew Smith

    Matthew Smit

    24 Mayıs 2010
  • wwjoshdew

    wwjoshdew

    1 AĞUSTOS 2007