USE tempdb; -- DROP TABLE pessoa_fisica; CREATE TABLE pessoa_fisica ( id_pessoa_fisica int IDENTITY (1,1) PRIMARY KEY , nome varchar(100) NOT NULL , sexo varchar(1) NOT NULL ); -- DROP TABLE email; CREATE TABLE email ( id_email int IDENTITY (1,1) PRIMARY KEY , email varchar(100) NOT NULL , id_pessoa_fisica int NOT NULL REFERENCES pessoa_fisica(id_pessoa_fisica) ); -- inserindo na tabela pessoa_fisica INSERT INTO pessoa_fisica (nome, sexo) VALUES ('Maria','F'); INSERT INTO pessoa_fisica (nome, sexo) VALUES ('Ieda','F'); INSERT INTO pessoa_fisica (nome, sexo) VALUES ('Ilma','F'); INSERT INTO pessoa_fisica (nome, sexo) VALUES ('Felipe','F'); -- listando todas as pessoas fisicas cadastradas SELECT * FROM pessoa_fisica; -- inserindo na tabela email -- inserindo emails de Maria INSERT INTO email (email, id_pessoa_fisica) VALUES ('maria@exemplo.com', 1); INSERT INTO email (email, id_pessoa_fisica) VALUES ('maria.rosa@exemplo.com', 1); INSERT INTO email (email, id_pessoa_fisica) VALUES ('maria.silva@exemplo.com', 1); -- inserindo emails de Ieda INSERT INTO email (email, id_pessoa_fisica) VALUES ('ieda@exemplo.com', 2); INSERT INTO email (email, id_pessoa_fisica) VALUES ('ieda.lima@exemplo.com', 2); -- inserindo emails de Felipe INSERT INTO email (email, id_pessoa_fisica) VALUES ('felipe@exemplo.com', 4); INSERT INTO email (email, id_pessoa_fisica) VALUES ('felipe.santos@exemplo.com', 4); -- listando todos os emails cadastrados SELECT * FROM email; -- listando emails de Maria -- listando emails de Maria em várias linhas -- exemplo 1.1 SELECT email + '; ' FROM email WHERE id_pessoa_fisica = 1; -- listando emails de Maria em uma única linha -- exemplo 1.2 SELECT stuff( (SELECT email + '; ' FROM email WHERE id_pessoa_fisica = 1 FOR XML PATH('')),1,0,''); -- listando todos os emails cadastrados com todas as pessoas cadastradas, -- considerando vários emails em uma unica linha. -- exemplo 2 SELECT pessoa_fisica.nome , stuff ( ( SELECT email.email + '; ' FROM email WHERE email.id_pessoa_fisica = pessoa_fisica.id_pessoa_fisica FOR XML PATH('') ),1,0,'' ) AS emails FROM pessoa_fisica ;Mais uma vez espero ter ajudado ...
DBA, MySql, Oracle, Postgres, SQL Server, DB2, BI, TI, Business Intelligence, Data Science, Machine Learning, IoT, Arduino
quinta-feira, 1 de agosto de 2013
Converter várias linhas em uma única linha no SQL Server
Como converter várias linhas em uma única linha no SQL Server, separando por ponto e virgula ";".
Assinar:
Postar comentários (Atom)
Muito bom, parabéns!
ResponderExcluirMe ajudou muito.
Seja feliz!!!
Excluir