Как показать всю дату за определенный месяц по горизонтали? - PullRequest
0 голосов
/ 31 октября 2018

У меня есть таблица базы данных в имени postgreSQL как "время", например:

|  Name  |  |    Date1   | |AttendHour1| |    Date2   | |AttendHour2|
---------------------------------------------------------------------
| Zakir1 |  | 2018-10-01 | |   8.00    | | 2018-10-02 | |   8.00    |
| Zakir2 |  | 2018-10-01 | |   9.00    | | 2018-10-02 | |   9.00    |
| Zakir3 |  | 2018-10-01 | |   7.00    | | 2018-10-02 | |   7.00    | 

Из этой таблицы я хочу получить результат как ..

|  Name  | | 2018-10-01 | | 2018-10-02 |
----------------------------------------
| Zakir1 | |   8.00     | |   8.00     |
| Zakir2 | |   9.00     | |   9.00     |
| Zakir3 | |   7.00     | |   7.00     |

Что такое PostgreSQL Query?

1 Ответ

0 голосов
/ 01 ноября 2018

В нынешнем виде вам даже не нужен запрос crosstab() для этого. Просто:

SELECT name, AttendHour1 AS "2018-10-01", AttendHour2 AS "2018-10-02"
FROM   time;

Если вы хотите назначить столбцу имена динамически из столбца значения : это невозможно. SQL не допускает динамических имен столбцов. Вам нужен двухэтапный рабочий процесс:

1. Создайте строку запроса динамически.

Чтобы сгенерировать вышеуказанный запрос:

SELECT format('SELECT name, AttendHour1 AS %I, AttendHour2 AS %I FROM time'
             , date1, date2)
FROM   time
LIMIT  1;
2. Выполните запрос.
...