Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

महीने के हिसाब से उत्पाद की बिक्री की तुलना करने के लिए SQL क्वेरी

केस स्टेटमेंट मेरा सबसे अच्छा एसक्यूएल मित्र है। दोनों महीनों में अपना 0 रेव जनरेट करने के लिए आपको समय के लिए एक टेबल भी चाहिए।

अनुमान निम्नलिखित तालिकाओं की उपलब्धता पर आधारित हैं:

और

उदाहरण 1 बिना खाली पंक्तियों के:

select
    Category
    ,month
    ,SUM(CASE WHEN YEAR = 2008 THEN Revenue ELSE 0 END) this_year
    ,SUM(CASE WHEN YEAR = 2007 THEN Revenue ELSE 0 END) last_year

from
    sales

where
    year in (2008,2007)

group by
    Category
    ,month

रिटर्न:

Category  |  Month  |  Rev. This Year  |  Rev. Last Year
Bikes          1          10 000               0
Bikes          2          12 000               11 000
Bikes          3          12 000               11 500
Bikes          4          0                    15 400

उदाहरण 2 खाली पंक्तियों के साथ:मैं एक उप क्वेरी का उपयोग करने जा रहा हूं (लेकिन अन्य नहीं कर सकते हैं) और प्रत्येक उत्पाद और वर्ष महीने के कॉम्बो के लिए एक खाली पंक्ति वापस कर देंगे।

select
    fill.Category
    ,fill.month
    ,SUM(CASE WHEN YEAR = 2008 THEN Revenue ELSE 0 END) this_year
    ,SUM(CASE WHEN YEAR = 2007 THEN Revenue ELSE 0 END) last_year

from
    sales
    Right join (select distinct  --try out left, right and cross joins to test results.
                   product
                   ,year
                   ,month
               from
                  sales --this ideally would be from a products table
                  cross join tm
               where
                    year in (2008,2007)) fill


where
    fill.year in (2008,2007)

group by
    fill.Category
    ,fill.month

रिटर्न:

Category  |  Month  |  Rev. This Year  |  Rev. Last Year
Bikes          1          10 000               0
Bikes          2          12 000               11 000
Bikes          3          12 000               11 500
Bikes          4          0                    15 400
Bikes          5          0                    0
Bikes          6          0                    0
Bikes          7          0                    0
Bikes          8          0                    0

ध्यान दें कि अधिकांश रिपोर्टिंग टूल इस क्रॉसस्टैब या मैट्रिक्स कार्यक्षमता को करेंगे, और अब जब मुझे लगता है कि SQL सर्वर 2005 में पिवट सिंटैक्स है जो इसे भी करेगा।

यहां कुछ अतिरिक्त संसाधन दिए गए हैं। CASEhttp://www.4guysfromrolla.com/webtech/ 102704-1.shtml SQL सर्वर 2005 PIVOThttp://msdn.microsoft.com/en-us /लाइब्रेरी/ms177410.aspx



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संग्रहीत प्रक्रिया, बाएं जुड़ने से मुझे डुप्लिकेट पंक्तियां मिलती हैं, लेकिन मुझे एक ही आईडी के साथ प्रत्येक रिकॉर्ड के लिए शीर्ष (1) पंक्ति चाहिए

  2. स्ट्रिंग के रूप में क्वेरी संग्रहीत किए बिना डायनामिक पिवट क्वेरी

  3. गतिशील तालिका बनाने के लिए टी एसक्यूएल क्वेरी प्रारूप

  4. SQL में प्रत्येक पंक्ति के लिए समूह के अनुसार शब्दों को अलग करें

  5. SQL:प्रत्येक कॉलम के रिकॉर्ड के लिए ऑडिट लौटाएं