sql >> Database >  >> RDS >> Mysql

Haal de gegevens van de afgelopen 3 maanden op als afzonderlijke kolommen, niet als rijen voor elke gebruiker

  1. Gebruik LEFT JOIN om er zeker van te zijn, krijgt u een volledige lijst met bedrijven, ook al is er geen enkele maand een factuur.
  2. Je moet handmatig of met een script n kolommen maken.
  3. Je kunt gewoon meedoen, er is geen subquery vereist.
  4. Gebruik GROUP BY om één record per bedrijf te genereren.
  5. Gebruik CASE WHEN of IF ELSE om n kolommen te maken en alleen gegevens uit de relevante rij te kiezen. Het kan de eerste of elke rij zijn, dus gebruik de aggregatiefunctie om gegevens te kiezen, zelfs als deze zich in een rij voor een groep bevinden, door andere rijwaarden te maken als NULL als aggregatiefunctie null-waarden uitsluiten.
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. MySQL-datumvergelijking

  2. Verwijder alle opgeslagen procedures in MySQL of gebruik tijdelijke opgeslagen procedures

  3. Hoe de rijafstand tussen twee breedte- en lengtegraden te berekenen in PHP

  4. MySQL COS() Functie – Retourneer de cosinus van een getal in MySQL