Как сделать строку в качестве заголовка, а затем посчитать заполненные данные - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь сосчитать все строки, у которых есть статус извлеченных, но я могу только заполнить их по строкам, а затем подсчитать их динамически.

Как я могу сделать свои строки заголовком, а затем посчитать статус после?

Мне нужно сделать строки имени общежития заголовком столбца, а затем извлечь их в виде строк.

Запрос:

SELECT  Room_Number as 'Room Number',Dorm_Name as 'Dorm Name',
 COUNT(IF(action = 'Checked Out' , 1, NULL)) 'Checked Out'  FROM billeting_history group by dorm_name;


+-----------+-------------+-------------+ 
| Dorm Name | Room_number | Checked Out |
+-----------+-------------+-------------+ 
| Arquitola |         205 |           1 |
| Hangar    |         201 |           0 |
| Noble     |         200 |           0 |
+-----------+-------------+-------------+ 

Desired output :

+-------------+-----------+--------+-------+ 
| Room Number | Arquitola | Hangar | Noble |
+-------------+-----------+--------+-------+
|         205 |         1 |      0 |     0 |
|         201 |         0 |      0 |     0 |
|         200 |         0 |      0 |     0 |
+-------------+-----------+--------+-------+

1 Ответ

0 голосов
/ 12 февраля 2019

Если вы знаете конкретные столбцы, которые вам нужны, вы можете использовать условное агрегирование:

SELECT Room_Number, 
       SUM( CASE WHEN Dorm_Name = 'Arquitola' THEN checked_out ELSE 0 END ) as Arquitola,
       SUM( CASE WHEN Dorm_Name = 'Hangar' THEN checked_out ELSE 0 END ) as Hangar,
       SUM( CASE WHEN Dorm_Name = 'Noble' THEN checked_out ELSE 0 END ) as Noble
FROM billeting_history 
GROUP BY Room_Number;

Если вы не знаете полного списка имен, вам необходимо использовать динамический SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...