DEV Community

Roberto Vale
Roberto Vale

Posted on

1 1

Transformando varias linhas em uma linha só

CREATE DATABASE DB
GO

USE DB
GO

DROP TABLE IF EXISTS PESSOA
GO

CREATE TABLE PESSOA
(
COD_PESSOA INT IDENTITY PRIMARY KEY,
NOME_PESSOA VARCHAR(50),
SOBRENOME_PESSOA VARCHAR(50)
)
GO

INSERT PESSOA
VALUES ('HUGUINHO','PATO'), ('ZEZINHO','PATO'), ('LUIZINHO','PATO')
GO

CREATE TABLE TELEFONE
(
COD_TELEFONE INT IDENTITY PRIMARY KEY,
NUMERO_TELEFONE VARCHAR(25),
TIPO_TELEFONE VARCHAR(10),
COD_PESSOA INT REFERENCES PESSOA
)
GO

INSERT TELEFONE
VALUES ('1234-5678','FIXO',1), ('999999999','CELULAR',1), ('333666999','CELULAR',2), ('222444666','CELULAR',2)
GO

--NOME DE TODAS AS PESSOAS
-- SOMENTE TELEFONE CELULAR
--VAI EXISTIR NOME DUPLICADO NA LISTA
SELECT
*
FROM PESSOA P left JOIN TELEFONE T
ON P.COD_PESSOA = T.COD_PESSOA
and T.TIPO_TELEFONE = 'CELULAR'
GO

---------Exemplo antigo
SELECT
P.*,
cel1.NUMERO_TELEFONE1,
cel2.NUMERO_TELEFONE2,
FIXO1.NUMERO_TELEFONE3
FROM
PESSOA P
left join
(select
COD_PESSOA,
max(NUMERO_TELEFONE) NUMERO_TELEFONE1
from
TELEFONE T
where T.TIPO_TELEFONE = 'CELULAR'
group by COD_PESSOA)cel1
on
p.COD_PESSOA = cel1.COD_PESSOA
left join
(select
COD_PESSOA,
min(NUMERO_TELEFONE) NUMERO_TELEFONE2
from
TELEFONE T
where T.TIPO_TELEFONE = 'CELULAR'
group by COD_PESSOA)cel2
on
p.COD_PESSOA = cel2.COD_PESSOA
left join
(select
COD_PESSOA,
min(NUMERO_TELEFONE) NUMERO_TELEFONE3
from
TELEFONE T
where T.TIPO_TELEFONE = 'FIXO'
group by COD_PESSOA)FIXO1
on
p.COD_PESSOA = FIXO1.COD_PESSOA

--exemplo novo
select
*
FROM PESSOA P
cross apply
(SELECT
t.NUMERO_TELEFONE + ','
FROM TELEFONE t
where TIPO_TELEFONE = 'CELULAR'
and P.COD_PESSOA = t.COD_PESSOA
FOR XML path ('')) resultado/Nome da tabela/ (NUMERO_TELEFONE/Nome do campo/)

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay