sql >> Database >  >> RDS >> PostgreSQL

Som voor meerdere perioden in één zoekopdracht?

Ervan uitgaande dat ik uw verzoek goed begrijp, denk ik dat u iets nodig heeft in de trant van:

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"

Dit zou u alle perioden moeten opleveren waarin u geïnteresseerd bent in één enkele resultatenset. Aangezien de zoekopdracht 'on-the-fly' in uw front-end wordt 'gegenereerd', kunt u zoveel rijen aan het gedeelte met perioden toevoegen als u wilt.

Bewerken:met wat vallen en opstaan ​​is het me gelukt om het werkend te krijgen [in sqlFiddle][1] en heb ik de bovenstaande syntaxis dienovereenkomstig bijgewerkt.



  1. Hoe breng ik de productiedatabase over naar de staging op Heroku met behulp van pgbackups? Fout krijgen

  2. MySQL-query, groeperen op en vervolgens sorteren op meest recent gegroepeerd met voorwaarde

  3. rails 3.2.2 (of 3.2.1) + Postgresql 9.1.3 + Ubuntu 11.10 Verbindingsfout

  4. Hoe de IF/ELSE-instructie te gebruiken om een ​​nieuw xml-knooppuntitem in Sql bij te werken of te maken