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

एक ही क्वेरी में एकाधिक दिनांक सीमाओं के लिए योग?

यह मानते हुए कि मैं आपके अनुरोध को सही ढंग से समझता हूं, मुझे लगता है कि आपको इन पंक्तियों के साथ कुछ चाहिए:

SELECT "periods"."start_date", 
       "periods"."end_date", 
       SUM(CASE WHEN "balance_transactions"."created" BETWEEN "periods"."start_date" AND "periods"."end_date" THEN "balance_transactions"."fee" ELSE 0.00 END) AS period_sum
  FROM "balance_transactions" 
  JOIN charges ON balance_transactions.source = charges.balance_id 
  JOIN ( SELECT '2013-12-20'::date as start_date, '2014-01-19'::date as end_date UNION ALL
         SELECT '2013-12-21'::date as start_date, '2014-01-20'::date as end_date UNION ALL
         SELECT '2013-12-22'::date as start_date, '2014-01-21'::date as end_date UNION ALL
         SELECT '2013-12-23'::date as start_date, '2014-01-22'::date as end_date UNION ALL
         SELECT '2013-12-24'::date as start_date, '2014-01-23'::date as end_date
         ) as periods
    ON "balance_transactions"."created" BETWEEN "periods"."start_date" AND "periods"."end_date"
 WHERE "balance_transactions"."account_id" = 6 
   AND "balance_transactions"."type" = 'charge' 
   AND "charges"."refunded" = false 
   AND "charges"."invoice" IS NOT NULL
 GROUP BY "periods"."start_date", "periods"."end_date"

इससे आपको वे सभी अवधियां वापस मिल जाएंगी जिनमें आप एक एकल परिणाम में रुचि रखते हैं। चूंकि क्वेरी आपके फ़्रंट-एंड में फ्लाई पर 'जेनरेट' होती है, इसलिए आप जितनी चाहें उतनी पंक्तियाँ पीरियड्स भाग में जोड़ सकते हैं।

संपादित करें:कुछ परीक्षण और त्रुटि के साथ मैं इसे [sqlFiddle में] [1] काम करने में कामयाब रहा और तदनुसार ऊपर दिए गए सिंटैक्स को अपडेट किया।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हाइबरनेट के साथ मानचित्रण सरणी

  2. ActiveRecord नेस्टेड चयन

  3. मैं एक संग्रह के बिना सुवक्ता बिल्डर का उपयोग करके एक इंटरसेक्ट कैसे बना सकता हूँ?

  4. दो सीमांकक के साथ विभाजित स्ट्रिंग और प्रकार परिवर्तित करें

  5. मावेन-असेंबली-प्लगइन के साथ आवश्यक ड्राइवरों को शामिल करते समय कोई उपयुक्त ड्राइवर नहीं मिला