Ir para conteúdo
Fórum Script Brasil

Evandro Junqueira Ramos

Membros
  • Total de itens

    11
  • Registro em

  • Última visita

Sobre Evandro Junqueira Ramos

  • Data de Nascimento 03/07/1987

Contatos

  • Website URL
    http://www.sqlserverdicas.com

Perfil

  • Gender
    Male
  • Location
    Campinas - SP

Evandro Junqueira Ramos's Achievements

0

Reputação

  1. Pelo que eu entendi, este campo é do tipo VARCHAR, correto? Se for, você pode utilizar a função REPLACE do SQL Server, substituindo o caractere '.' por uma string vazia. Assim, você atualizaria o campo com o resultado desta função. No seu caso, ficaria: UPDATE afd SET dados = REPLACE(dados,'.','') WHERE <filtro> Referência do Replace: REPLACE (Transact-SQL) Espero ter ajudado, Abs!
  2. Você pode transformar a sub query em uma view também, pode facilitar. Abs! Evandro, Vou testar e posto o resultado. Muito obrigado.
  3. Olá novicebg Já passei por uma situação semelhante e resolvi utilizando uma sub query para agrupar os dados pela data desejada (MIN ou MAX). Criei uma estrutura semelhante a que você descreveu para simular a situação e gerei um script que atende a sua necessidade. Acredito que haja uma solução melhor, mas o script abaixo pode ser um modelo para resolver o seu problema: -- Criando tabelas para teste CREATE TABLE #endereco (id INT IDENTITY PRIMARY KEY, endereco VARCHAR(100)) CREATE TABLE #pessoa (id INT IDENTITY PRIMARY KEY, nome VARCHAR(100), dtNasc DATETIME, endereco INT FOREIGN KEY REFERENCES endereco(id)) -- Inserindo dados nas tabelas INSERT INTO #endereco VALUES ('endereco 1') INSERT INTO #endereco VALUES ('endereco 2') INSERT INTO #endereco VALUES ('endereco 3') INSERT INTO #pessoa VALUES ('Pessoa A','1986-05-01',1) INSERT INTO #pessoa VALUES ('Pessoa B','1943-12-25',2) INSERT INTO #pessoa VALUES ('Pessoa C','1960-04-21',1) INSERT INTO #pessoa VALUES ('Pessoa D','1989-01-06',1) INSERT INTO #pessoa VALUES ('Pessoa E','1988-06-17',2) -- Realizando consulta desejada SELECT P.id, P.nome, P.dtNasc, P.endereco, E.endereco FROM #pessoa P INNER JOIN (SELECT DISTINCT MIN(dtNasc) AS dtNasc, endereco FROM #pessoa GROUP BY endereco) M ON M.endereco = P.endereco AND M.dtNasc = P.dtNasc INNER JOIN #endereco E ON E.id = P.endereco -- Excluindo tabelas DROP TABLE #pessoa DROP TABLE #endereco Abs...
  4. Raphael, Acho que você não entendeu.. O script que eu enviei precisa ser modificado de para atender às suas tabelas.... provavelmente deu erro naquele "+ ... + " Eu coloquei uma sintaxe de exemplo, naquele script você precisaria colocar cada coluna de sua tabela convertendo ela para VARCHAR(10) e concatenando com um ";" Se você puder passar os campos das tabelas eu posso montar o script final... A sugestão do Marcelo também é boa, você não precisaria migrar toda a base de dados, bastaria instalar uma instancia do SQL Server 2008 com o Management Studio e utilizar o Wizard para exportar os dados. Abraço!
  5. Perdão Raphael, O recurso que citei realmente não está disponível na versão Express do SQL Server 2005. A solução do Marcelo_2 pode resolver o seu problema. Uma outra sugestão também seria modificar a query para atender ao formato CSV, como desejado. Não sei se é a melhor opção, mas a consulta ficaria parecida com: SELECT CAST(dbo.coluna0.campo0 AS VARCHAR(10) + ';' + CAST(dbo.coluna0.campo1 AS VARCHAR(10)) + ';' + .... + CAST(dbo.coluna3.campoN AS VARCHAR(10)) + ';' FROM dbo.coluna0, dbo.coluna1, dbo.coluna2, dbo.coluna3 - Como eu não sabia quantas colunas cada tabela teria, utilizei campos fictícios (campo0, campo1, ... , campoN) - Utilizei o tamanho 10 para representar o número convertido. Se necessário, você pode alterar este tamanho conforme sua necessidade Desse modo, todos os campos do resultado foram concatenados utilizando o separador ";" Se você utilizar o "Save result as...", deve obter o resultado esperado. Abraço,
  6. Olá Raphael! Utilizo o SQL Server 2008 Express, mas esta dica também vale para as versões do SQL Server 2005. O SQL Server possui Wizards para importação e exportação de dados. Além disso, um dos formatos disponíveis para exportação é justamente o formato excel (O CSV também pode ser utilizado se necessário). Se os seus dados já estão em uma tabela no banco de dados "analise", basta acessar o SQL Server Management Studio, conectar o Object Explorer ao banco de dados e em seguida clicar com o botão direito do mouse sobre o banco de dados. No menu exibido, acesse o submenu "Tasks" e clique na opção "Export Data...". Uma janela de wizard será exibida. Ela solicitará as informações de conexão para a fonte de dados (base de dados "analise" e para o destino, onde você poderá escolher o formato a ser utilizado). Nas opções de destino, você encontrará a opção "Microsoft Excel" e inclusive poderá escolher a versão do Excel a ser utilizada (97 / 2003 / 2007 / etc). Caso o formato CSV seja necessário, você poderá selecionar o destino "Flat File" e informar os separadores a serem utilizados no arquivo de saída. Você encontrará maiores informações sobre esta ferramenta nos links abaixo: - MSDN - Using the SQL Server Import and Export Wizard to Move Data - Database Journal - SQL Server 2005 Import / Export Wizard Abraço!
  7. Olá PLEOLP, Fiz um exemplo simples usando uma tabela temporária #Movimento que acredito ser uma simplificação da sua tabela. /* Criando tabela temporária para execução da consulta */ CREATE TABLE #Movimento ( idMovimento int identity (1,1) PRIMARY KEY ,nomeCliente VARCHAR(100) ,data DATETIME ) GO /* Preenchendo a tabela temporária com alguns valores para teste*/ INSERT INTO #Movimento VALUES ('Evandro', GETDATE()) GO 5 INSERT INTO #Movimento VALUES ('Carlos', GETDATE()) GO 2 INSERT INTO #Movimento VALUES ('Mariana', GETDATE()) GO 3 /* Executando a consulta */ SELECT TOP 1 nomeCliente FROM #Movimento GROUP BY nomeCliente ORDER BY COUNT(idMovimento) DESC Repare que a consulta tem 2 pontos importantes para obter o resultado esperado: 1 - Agrupar as movimentações pelo Cliente (no seu caso, imagino que seja pelo ID ou código de cliente) 2 - Ordenar o resultado, em odem decrescente, utilizando como campo de ordenação a expressão "COUNT(idMovimento)", que retorna o número de registros que foram agrupados em cada linha do resultado. Outra consideração: A função COUNT() aceita como parâmetro o caracter *, porém não aconselho utilizar neste caso, pois o SQL Server passará a incluir os registros cujo cliente é nulo no resultado. Espero ter ajudado. Abraço!
  8. Olá Eduardo! Não sei se entendi bem a sua questão, mas me parece que você gostaria de passar uma lista de valores como parâmetro da procedure para realizar a sua consulta. Se este for o seu caso, posso te indicar este link: http://sqlserverdicas.blogspot.com/2010/12...metro-para.html. Para seguir esta dica, será necessário trabalhar com o SQL Server 2005 ou mais recente. Se este não é o seu caso, peço que detalhe um pouco mais. Abraço!
  9. Olá Marcelo, Também não sei se entendi a sua pergunta, mas o próprio SQL Server oferece ferramentas para análise da performance. Você poderia começar utilizando o Profiler, que captura todos os comandos executados em um servidor SQL Server. Outra opção é o SQL Server Database Engine Tuning Advisor que verifica a performance dos objetos do banco, além de possuir uma ferramenta que analisa e otimiza consultas. Além disso, você pode verificar se as boas práticas em Banco de Dados estão sendo empregadas em sua base (normalização, criação de índices, uso de SELECT sem o *, utilização de filtros corretos em consultas, etc.) Segue os links das ferramentas que citei: Referência do SQL Server Profiler http://msdn.microsoft.com/pt-br/library/ms173757.aspx Database Engine Tuning Advisor Overview: http://technet.microsoft.com/en-us/library/ms173494.aspx Abraço!
  10. A tabela está indexada? A consulta está retornando apenas os campos utilizados na aplicação? Ou retorna os cento e poucos campos da tabela? O filtro da consulta está correto? Não está enviando linhas desnecessárias para a aplicação? (Isso consome recursos de rede e processamento)
  11. A consulta abaixo resolve o problema: SELECT A.nome, B.nome FROM bancoA.dbo.tabelaA A, bancoB.dbo.tabelaB B where A.cpf = B.cpf O campo cpf é do tipo VARCHAR? Ele está sendo utilizado para unir as tabelas. Verifique se não existe conflito entre a COLLATION dos bancos.
×
×
  • Criar Novo...