sql >> Database teknologi >  >> RDS >> Mysql

Hent data for de seneste 3 måneder som separate kolonner, ikke rækker for hver bruger

  1. Brug LEFT JOIN for at sikre dig, får du en komplet liste over virksomheder, selvom der ikke er nogen regning for nogen måned.
  2. Du skal oprette n kolonner manuelt eller ved hjælp af et script.
  3. Du kan blot lave en simpel joinforbindelse, ingen underforespørgsel er påkrævet.
  4. Brug GROUP BY at generere en enkelt post pr. virksomhed.
  5. Brug CASE WHEN eller IF ELSE at oprette n kolonner og kun vælge data fra den relevante række. Det kan være den første eller en hvilken som helst række, så brug den aggregerede funktion til at vælge data, selvom det er på en hvilken som helst række for en gruppe ved at lave andre rækkeværdier som NULL som aggregeret funktion ekskluder null-værdier.
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. Tabeltransformation / feltparsing i PL/SQL

  2. `initialize':ordningen postgres accepterer ikke registreringsdelen:postgres:@ (eller dårligt værtsnavn?) (URI::InvalidURIError) med Docker

  3. trunc og round funktion i sql

  4. Postgres UUID og Hibernate → ingen kolonne fundet