sql >> Databasteknik >  >> RDS >> Mysql

Hämta data från de senaste tre månaderna som separata kolumner, inte rader för varje användare

  1. Använd LEFT JOIN för att vara säker får du en komplett lista över företag även om det inte finns någon faktura för någon månad.
  2. Du måste skapa n kolumner manuellt eller med ett skript.
  3. Du kan bara göra en enkel koppling, ingen underfråga krävs.
  4. Använd GROUP BY för att generera en enda post per företag.
  5. Använd CASE WHEN eller IF ELSE för att skapa n kolumner och bara välja data från relevant rad. Det kan vara första eller vilken rad som helst, så använd aggregatfunktionen för att plocka data även om det finns på valfri rad för en grupp genom att göra andra radvärden som NULL exkludera null-värden som aggregatfunktion.
SELECT 
    u.display_name,
    SUM(IF( bill_month='Jan2k19', package_price, NULL)) as first_bill,
    SUM(IF( bill_month='Feb2k19', package_price, NULL)) as second_bill,
    SUM(IF( bill_month='Mar2k19', package_price, NULL)) as third_bill
FROM bf_users u 
LEFT JOIN bf_monthly_bill b on u.id=b.company_id
GROUP BY u.display_name;



  1. Återställning fungerar inte i Oracle med Liquibase

  2. Korrekt syntax för array av sammansatt typ

  3. Undvik CHAR-trimning när du använder eclipselink

  4. Kan inte krympa "skrivskyddad" databas | Krympa transaktionslogg när du använder AlwaysOn Availability Group