sql >> Databáze >  >> RDS >> Mysql

Načíst data za poslední 3 měsíce jako samostatné sloupce, nikoli řádky pro každého uživatele

  1. Použijte LEFT JOIN abyste se ujistili, že získáte úplný seznam společností, i když za žádný měsíc není účtován žádný účet.
  2. N sloupců musíte vytvořit ručně nebo pomocí skriptu.
  3. Můžete se jednoduše připojit, není potřeba žádný poddotaz.
  4. Použijte GROUP BY vygenerovat jeden záznam na společnost.
  5. Použijte CASE WHEN nebo IF ELSE vytvořit n sloupců a vybrat data pouze z příslušného řádku. Může to být první nebo libovolný řádek, takže použijte agregační funkci k výběru dat, i když jsou na jakémkoli řádku pro skupinu, a to tak, že ostatní hodnoty řádku nastavíte jako NULL jako agregační funkce vylučují hodnoty null.
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. Vložit do jednoho základu tabulky na základě spojení ze 2 dalších tabulek

  2. Normalizace v MYSQL

  3. Jak získat pouze první úroveň podřízených uzlů hloubky?

  4. .NET 2.0 a MySql v režimu střední důvěryhodnosti