Как преобразовать один столбец, содержащий несколько строк в строки - PullRequest
1 голос
/ 11 октября 2019

У меня есть столбец с именем name Student_name и его значения, скажем, A, B, C, D, E, F и т. Д.

Теперь мне нужно преобразовать этот столбец в строку с каждымalias.

select A.counts from (
select count(b.ATTND_FLAG) as counts , b.ATTND_FLAG as ATTND_FLAG
from hr_emp_notifications a, v_emp_attendance b
where a.emp_id=b.emp_id
and a.emp_id=90327
and b.ATTND_FLAG is not null
group by b.ATTND_FLAG )A

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

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Я бы использовал условное агрегирование:

select sum(case when ea.attnd_flag = 'A' then 1 else 0 end) as num_a,
       sum(case when ea.attnd_flag = 'B' then 1 else 0 end) as num_b,
       sum(case when ea.attnd_flag = 'C' then 1 else 0 end) as num_c,
       sum(case when ea.attnd_flag = 'D' then 1 else 0 end) as num_d,
       sum(case when ea.attnd_flag = 'E' then 1 else 0 end) as num_e,
       sum(case when ea.attnd_flag = 'F' then 1 else 0 end) as num_f
from v_emp_attendance ea
where ea.emp_id = 90327;

Если вам нужно несколько сотрудников, используйте group by ea.emp_id`.

Обратите внимание, что join не требуется.

0 голосов
/ 11 октября 2019

Похоже, здесь нужна сводная оговорка -

SELECT *
FROM (SELECT NAME, ATTND_FLAG
      FROM v_emp_attendance)
PIVOT (COUNT(ATTND_FLAG)
       FOR NAME IN ('A' AS A, 'B' AS B, 'C' AS C /* AND SO ON */)
      )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...