Usuário com melhor resposta
Concatenar linhas em uma coluna - URGENTE

Pergunta
-
Olá,
eu tenho uma consulta que retorna o seguinte:
cod_vaga dsc_vaga
x terreo
y terreo
z terreo
a consulta é essa:
SELECT
XVAGA.COD_VAGA,
XVAGA.DSC_VAGA,
1 AS QTD
FROM
XVENDA
JOIN XITEMVENDA XI ON
XI.NUM_VENDA = XVENDA.NUM_VENDA
AND XI.COD_PESS_EMPR = XVENDA.COD_PESS_EMPR
LEFT JOIN XVAGA ON
XVAGA.NUM_UNID = XI.NUM_UNID
AND XVAGA.NUM_SUB_UNID = XI.NUM_SUB_UNID
AND XVAGA.COD_PESS_EMPR = XI.COD_PESS_EMPR
WHERE
XVENDA.NUM_VENDA = 531
porém eu preciso que retorne o seguinte: terreo: x , y, z
Estou quebrando a cabeça e não acho uma forma de fazer isso, me ajudem please. rs
Respostas
-
Não cheguei a testar, mas veja se resolve
WITH CTE AS( SELECT XVAGA.DSC_VAGA, XVAGA.COD_VAGA, 1 AS QTD FROM XVENDA JOIN XITEMVENDA XI ON XI.NUM_VENDA = XVENDA.NUM_VENDA AND XI.COD_PESS_EMPR = XVENDA.COD_PESS_EMPR LEFT JOIN XVAGA ON XVAGA.NUM_UNID = XI.NUM_UNID AND XVAGA.NUM_SUB_UNID = XI.NUM_SUB_UNID AND XVAGA.COD_PESS_EMPR = XI.COD_PESS_EMPR WHERE XVENDA.NUM_VENDA = 531 ) SELECT DISTINCT DSC_VAGA, STUFF((SELECT ','+COD_VAGA from CTE Q1 where Q1.DSC_VAGA=Q2.DSC_VAGA FOR XML PATH('')),1,1,'') FROM CTE Q2
"A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski
- Marcado como Resposta NataRangel quarta-feira, 8 de novembro de 2017 18:04
Todas as Respostas
-
Olá, veja se isso atende.
se atender é só você adaptar para sua query.
CREATE TABLE #TABELA( letra VARCHAR(25), andar VARCHAR(25) ); -- Inserindo dados INSERT INTO #TABELA VALUES('x','terreo'); INSERT INTO #TABELA VALUES('y','terreo'); INSERT INTO #TABELA VALUES('z','terreo'); -- Concatenando SELECT distinct andar, COALESCE( (SELECT CAST(letra AS VARCHAR(10)) + ';' AS [text()] FROM #TABELA AS O WHERE O.andar = C.andar ORDER BY o.letra FOR XML PATH(''), TYPE).value('.[1]', 'VARCHAR(MAX)'), '') AS andars FROM #TABELA AS C
Vinicius Fonseca - MCP | MCTS | MCDBA | MCITP | MCTS | MCT | ITIL Foundation - DGA SISTEMAS - Se minha resposta for útil, classifique-a. :)
-
Não cheguei a testar, mas veja se resolve
WITH CTE AS( SELECT XVAGA.DSC_VAGA, XVAGA.COD_VAGA, 1 AS QTD FROM XVENDA JOIN XITEMVENDA XI ON XI.NUM_VENDA = XVENDA.NUM_VENDA AND XI.COD_PESS_EMPR = XVENDA.COD_PESS_EMPR LEFT JOIN XVAGA ON XVAGA.NUM_UNID = XI.NUM_UNID AND XVAGA.NUM_SUB_UNID = XI.NUM_SUB_UNID AND XVAGA.COD_PESS_EMPR = XI.COD_PESS_EMPR WHERE XVENDA.NUM_VENDA = 531 ) SELECT DISTINCT DSC_VAGA, STUFF((SELECT ','+COD_VAGA from CTE Q1 where Q1.DSC_VAGA=Q2.DSC_VAGA FOR XML PATH('')),1,1,'') FROM CTE Q2
"A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski
- Marcado como Resposta NataRangel quarta-feira, 8 de novembro de 2017 18:04
-
Nossaaaaaaa funcionou certinho, muitíssimo obrigada, estou a quebrar a cabeça tem dias e não conseguia, salvou a minha vida rs, vou estudar essa query para próximas vezes que precisar.
Não cheguei a testar, mas veja se resolve
WITH CTE AS( SELECT XVAGA.DSC_VAGA, XVAGA.COD_VAGA, 1 AS QTD FROM XVENDA JOIN XITEMVENDA XI ON XI.NUM_VENDA = XVENDA.NUM_VENDA AND XI.COD_PESS_EMPR = XVENDA.COD_PESS_EMPR LEFT JOIN XVAGA ON XVAGA.NUM_UNID = XI.NUM_UNID AND XVAGA.NUM_SUB_UNID = XI.NUM_SUB_UNID AND XVAGA.COD_PESS_EMPR = XI.COD_PESS_EMPR WHERE XVENDA.NUM_VENDA = 531 ) SELECT DISTINCT DSC_VAGA, STUFF((SELECT ','+COD_VAGA from CTE Q1 where Q1.DSC_VAGA=Q2.DSC_VAGA FOR XML PATH('')),1,1,'') FROM CTE Q2
"A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski
-
Oi, obrigada, porém os dados não são sempre os mesmos, eu não sei quais virão na consulta pois os mesmos já estão inseridos.
Olá, veja se isso atende.
se atender é só você adaptar para sua query.
CREATE TABLE #TABELA( letra VARCHAR(25), andar VARCHAR(25) ); -- Inserindo dados INSERT INTO #TABELA VALUES('x','terreo'); INSERT INTO #TABELA VALUES('y','terreo'); INSERT INTO #TABELA VALUES('z','terreo'); -- Concatenando SELECT distinct andar, COALESCE( (SELECT CAST(letra AS VARCHAR(10)) + ';' AS [text()] FROM #TABELA AS O WHERE O.andar = C.andar ORDER BY o.letra FOR XML PATH(''), TYPE).value('.[1]', 'VARCHAR(MAX)'), '') AS andars FROM #TABELA AS C
Vinicius Fonseca - MCP | MCTS | MCDBA | MCITP | MCTS | MCT | ITIL Foundation - DGA SISTEMAS - Se minha resposta for útil, classifique-a. :)
-