Transformar colunas de uma tabela em linhas - SQL

Preciso transformar colunas de uma tabela em linhas, onde alguns valores aparecem duplicados. Porém não consegui achar uma forma de fazer isso usando PIVOT e/ou SQL Dinâmico. Tenho a primeira tabela, preciso deixar como a segunda, conforme abaixo.

Qual banco de dados? Se for Oracle:

http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.html

O que ele precisa parece ser mais LISTAGG e não PIVOT…

LISTAGG junta dentro de uma mesma coluna. Apesar do cabeçalho “Usuário” na planilha estar agrupado, os valores estão em colunas separadas.

A LISTAGG até deu certo mas utilizei outro campo, o exemplo que mandei, deu erro: o resultado da concatenação de string é extenso demais.

ListAgg fica gambiarra nesse caso que mostrou da planilha.

Mostra aqui esse SQL que você tentou e erro.

Na verdade a “gambiarra” até me atenderia, para o que preciso.

select distinct a.nr_atendimento,
a.dt_conta_definitiva,
a.vl_conta,
listagg(b.nm_usuario, ‘,’)
within group (order by 1) usuario
FROM conta_paciente a
INNER JOIN material_atend_paciente b
on a.nr_atendimento = b.nr_atendimento
where a.dt_conta_definitiva BETWEEN ‘25/11/2016’ and '03/12/2016’
group by a.nr_atendimento, a.dt_conta_definitiva, a.vl_conta
order by dt_conta_definitiva;

Se a gambiarra está atendendo, então pode usar mesmo.