Preciso fazer esse select Sql Server alguém pode ajudar?

20/09/2017

0

Elaborar uma consulta em SQL com o nome da pessoa,
--o tipo e o número do telefone. Trazer preferencialmente
--o telefone celular (Tabela tipoTelefone é o
--cadastro código 2 - celular). Caso não tenha cadastrado,
--trazer na consulta o primeiro número encontrado. Trazer apenas um número por pessoa


<
IF OBJECT_ID('tempdb..#Pessoa') IS NOT NULL DROP TABLE #Pessoa;
IF OBJECT_ID('tempdb..#Municipio') IS NOT NULL DROP TABLE #Municipio;
IF OBJECT_ID('tempdb..#TipoTelefone') IS NOT NULL DROP TABLE #TipoTelefone;
IF OBJECT_ID('tempdb..#Telefones') IS NOT NULL DROP TABLE #Telefones;
CREATE TABLE #Pessoa(
cdpessoa int PRIMARY KEY,
nmPessoa varchar(200),
bairro varchar(200),
cep int,
cdmunicipio int
);
CREATE TABLE #Municipio(
cdMunicipio int PRIMARY KEY,
nmMunicipio varchar(200),
nuIBGE int,
sgEstado char(2)
);
CREATE TABLE #TipoTelefone(
cdTipoTelefone int PRIMARY KEY,
nmTipoTelefone varchar(60)
);
CREATE TABLE #Telefones(
cdTelefone int PRIMARY KEY,
cdTipoTelefone int,
nuTelefone VARCHAR(20),
cdPessoa INT
);
INSERT INTO #Municipio SELECT TOP 10 id_municipio, nm_municipio, m.nr_codigo_ibge, uf.sg_uf from municipio m join uf on uf.id_uf = m.cd_uf WHERE m.cd_uf=81 ORDER BY 1;
INSERT INTO #TipoTelefone VALUES (1,'Fixo Residencial'), (2,'Celular'), (3,'Fixo Comercial');
WITH qry AS (SELECT cdMunicipio, p.* FROM #Municipio m CROSS APPLY (SELECT TOP (ABS(CHECKSUM(NewId())) % 300) pessoa.*, l.nm_localidade FROM pessoa, localidade l WHERE l.id_localidade = pessoa.cd_localidade AND l.cd_municipio = m.cdMunicipio) p)
INSERT INTO #pessoa SELECT qry.id_pessoa, qry.nm_pessoa, qry.nm_localidade, qry.nr_cep, qry.cdMunicipio FROM qry;
WITH qry AS (
SELECT TOP(SELECT COUNT(1) * 3 FROM #Pessoa) p.nr_fone1,(ABS(CHECKSUM(NewId())) % 4) t, t.id
FROM pessoa p CROSS APPLY (SELECT (ABS(CHECKSUM(NewId())) % (SELECT COUNT(1)+1 FROM #Pessoa)) id)t
WHERE p.nr_fone1 IS NOT NULL)
INSERT INTO #Telefones
SELECT ROW_NUMBER()OVER(ORDER BY id), qry.t, qry.nr_fone1, qry.id FROM qry WHERE t > 0 AND qry.id > 0;

/>
Rafael Prado

Rafael Prado

Responder

Post mais votado

20/09/2017

Boa tarde, Rafael

Qual é a questão no seu código SQL? Ele é executado? Se não, qual erro retorna? Ele executa? Traz registros?
Esclareça pra gente tentar ajudar você!

:)

Felipe Morais

Felipe Morais
Responder

Mais Posts

20/09/2017

Rafael Prado

Esse código executa tudo ok. Eu coloquei para pessoa gerar a tabelas eu preciso do select que falei acima do código
pois não to conseguindo fazer.
Responder

20/09/2017

Felipe Morais

Faltam as tabelas #UF, #Localidade.
O campo nr_fone1 de pessoa não foi declarado no CREATE TABLE.

Além dessas tabelas temporárias, existem outras que não foram declaradas no script SQL?
Responder

20/09/2017

Rafael Prado

Não a mais tabelas.

As tabelas criadas são as seguintes:
Pessoa, Município, telefone e tipo telefone, o estado é uma coluna de município.

Bom se você gerar as tabelas e fazer um select em telefone você vai ver o id pessoa

O select que eu preciso é simples mais não sou muito bom em sql

Elaborar uma consulta em SQL com o nome da pessoa,
--o tipo e o número do telefone. Trazer preferencialmente
--o telefone celular (Tabela tipoTelefone é o
--cadastro código 2 - celular). Caso não tenha cadastrado,
--trazer na consulta o primeiro número encontrado. Trazer apenas um número por pessoa
Responder

23/09/2017

Venancio Alves

Olá Rafael, você pode criar uma VIEW conforme abaixo:

CREATE VIEW nome_da_view
AS
SELECT nmPessoa AS PESSOA, nuTelefone AS TELEFONE, nmTipoTelefone AS TIPO_TELEFONE FROM pessoa
FULL JOIN telefones
ON pessoa.cdpessoa = telefones.cdPessoa
FULL JOIN TipoTelefone
ON telefones.cdTipoTelefone = TipoTelefone.cdTipoTelefone
FULL JOIN municipio
ON municipio.cdMunicipio = pessoa.cdmunicipio
WHERE nmTipoTelefone = 'Celular'


Obs: Cuidado com os campos nulos, pois pode trazer outros resultados, mas pode selecionar apenas os campos NOT NULL.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar