Вы хотите развернуть строки в столбец. Лучшее решение зависит от используемой базы данных. Подход с несколькими базами данных: union all
:
select claimID, error1 as error from mytable
union all select claimID, error2 from mytable
union all select claimID, error3 from mytable
union all select claimID, error4 from mytable
В базах данных, поддерживающих боковые соединения и конструктор values()
строк, есть лучшие варианты, которые не требуют сканирования таблицы несколько раз.
В Postgres:
select x.*
from mytable t
cross join lateral (values
(t.claimID, t.error1),
(t.claimID, t.error2),
(t.claimID, t.error3),
(t.claimID, t.error4)
) as x(claimID, error)
На SQL сервере вы просто замените cross join lateral
на cross apply
.