Preciso fazer esse select Sql Server alguém pode ajudar?
20/09/2017
0
--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
Post mais votado
20/09/2017
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
Mais Posts
20/09/2017
Rafael Prado
pois não to conseguindo fazer.
20/09/2017
Felipe Morais
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?
20/09/2017
Rafael Prado
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
23/09/2017
Venancio Alves
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.
Clique aqui para fazer login e interagir na Comunidade :)