Mysql
 sql >> база данни >  >> RDS >> Mysql

Извличане на данни от последните 3 месеца като отделни колони, а не редове за всеки потребител

  1. Използвайте LEFT JOIN за да сте сигурни, получавате пълен списък с компании, въпреки че няма сметка за нито един месец.
  2. Трябва да създадете n колони ръчно или с помощта на скрипт.
  3. Можете просто да направите просто присъединяване, не се изисква подзаявка.
  4. Използвайте GROUP BY за генериране на единичен запис за компания.
  5. Използвайте CASE WHEN или IF ELSE за създаване на n колони и избиране на данни само от съответния ред. Може да бъде първи или който и да е ред, така че използвайте обобщена функция, за да изберете данни, дори да са на който и да е ред за група, като направите стойностите на други редове като 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изчерпателно ръководство за това как да използвате MySQL

  2. Външният ключ между MySQL InnoDB таблици не работи...защо?

  3. MySQL не генерира правилни резултати, използвайки ODBC параметър за дата

  4. Хибернация картографиране на MySQL DateTime

  5. Кога и защо да използваме mysqli_fetch_row, mysqli_fetch_object, mysqli_fetch_assoc, mysqli_fetch_array