
fulvio
Moderadores-
Total de itens
1.218 -
Registro em
-
Última visita
Tudo que fulvio postou
-
(Resolvido) Selecionar os 15 ultimos Registros de uma tabela
pergunta respondeu ao Stewie de fulvio em SQL Server
rs... precisando estamos ai!! -
(Resolvido) Selecionar os 15 ultimos Registros de uma tabela
pergunta respondeu ao Stewie de fulvio em SQL Server
Criei duas tabelas temporárias. A primeira é como se for a sua tabela física, onde pegará os 15 ultimos registros. Criei temporária em instância. Caso queira criar em tempo de execução, terá que utilizar o @. Ex.: DECLARE @Tabela TABLE (Valor INT) -- Sua tabela física. CREATE TABLE #Temporaria (Valor INT) -- Inserção dos dados. INSERT INTO #Temporaria values(1) INSERT INTO #Temporaria values(2) INSERT INTO #Temporaria values(3) INSERT INTO #Temporaria values(4) INSERT INTO #Temporaria values(5) -- A criação de uma tabela temporária. CREATE TABLE #Tabela (Valor INT) -- Inserindo 3 registros. No seu caso, serão os 15 ultimos. INSERT INTO #Tabela SELECT TOP 3 * FROM #Temporaria -- Ai você poderá manipular os dados na tabela temporária. SELECT * FROM #Tabela -
(Resolvido) Selecionar os 15 ultimos Registros de uma tabela
pergunta respondeu ao Stewie de fulvio em SQL Server
Bom dia Stewie, Neste caso terá q pegar os 15 registros selecionados, colocar em uma temporária e manipulá-los novamente. Se fizer um group by, o sql fará o agrupamento de todos os dados da tabela, depois disponibilizará as 15 primeiras linhas de retorno. -
(Resolvido) Selecionar os 15 ultimos Registros de uma tabela
pergunta respondeu ao Stewie de fulvio em SQL Server
Boa tarde Stewie, Então você quer pegar os ultimos 15 registros, ok? A tabela possui alguma coluna clusterizada? Estou perguntando pois, se a tabela não for clusterizada, os 15 registros do primeiro resultado não necessariamente será igual às proximas vezes que o mesmo script rodar. O que pode ser feito é criar uma coluna identity. Isso faz com que a coluna identity se auto-incremente toda vez que algum registro for inserido. Aí você pode dar um select com top 15 em ordem decrescente. Sempre pegará os ultimos 15 registros. Ao criar a coluna identity, o sql automaticamente irá colocar a numeração pra você na sua tabela. Espero que esta opção ajude. -
Bom dia Romani. O mais viável é você importar as informações para os SQL igual elas aparecem no TXT (importação simples). Grave os dados em uma tabela. Uma dica: na tabela que criou para receber os dados, crie uma coluna de controle identity, para realizar a numeração das linhas na ordem em que os dados foram lidos. Assim fica mais fácil de você trabalhar com a separação dos dados, uma vez que os mesmos já se encontram na Base e ordenados. Utilize a função SUBSTRING do sql para ir separando e gravando os caracteres que desejar. As PK´s e FK´s poderão ser criadas também da mesma forma. Espero ter ajudado. SELECT SUBSTRING('Teste', 1, 3)
-
Bom dia NIK, Assim fica mais complexo.... rs. Então a data de referência será o ultimo dia de cada mês do ano corrente. Postei um exemplo logo abaixo. Uma observação: no mês 3 serão 6 funcionários "ativos" na empresa. O Sebastião foi contratado no mês 3 e não no mês 4, ok? CREATE TABLE #Dados (Funcionario VARCHAR(20), Data_Admissao DATETIME, Data_Demissao DATETIME) CREATE TABLE #Total (Mes INT, Total INT) insert INTO #Dados VALUES ('Joao', '2007-05-01', NULL) insert INTO #Dados VALUES ('Pedro', '2009-03-27', null) insert INTO #Dados VALUES ('Maria', '2008-09-05', '2010-04-01') insert INTO #Dados VALUES ('Alberto', '2006-03-04', null) insert INTO #Dados VALUES ('Carlos', '2010-01-01', '2010-07-05') insert INTO #Dados VALUES ('Sebastiao', '2010-03-03', null) -- Conferência SELECT * FROM #Dados -- Loop DECLARE @Mes INT DECLARE @Dia INT SET @Mes = 1 WHILE @Mes <= 12 BEGIN IF @Mes = 2 Set @Dia = 28 ELSE Set @Dia = 30 INSERT INTO #Total SELECT @Mes, ( SELECT COUNT(Funcionario) FROM #Dados WHERE Data_Demissao is NULL AND Data_Admissao <= ('2010-' + CAST(@Mes AS VARCHAR) +'-'+ CAST(@Dia AS VARCHAR))) + (SELECT COUNT(Funcionario) FROM #Dados WHERE Data_Demissao is not NULL and Data_Demissao > ('2010-' + CAST(@Mes AS VARCHAR) +'-'+ CAST(@Dia AS VARCHAR))) SET @Mes = @Mes + 1 END -- Conferência select * from #Total
-
Bom dia NIK, Ok, entendido. Mas aí você terá q ter uma data de referência, igual colocou no exemplo. Esta data será fornecida pelo usuário?
-
Boa tarde NIK, Segue um exemplo de como pode fazer o script. Espero que ajude... :.) OBS.: Caso queira alterar os meses de 1, 2, 3, etc, para jan, fev, mar, etc, poderá utilizar um CASE. CREATE TABLE #Dados (DATA DATETIME, CodFunc int) insert INTO #Dados VALUES ('2010-01-01', 1) insert INTO #Dados VALUES ('2010-02-01', 2) insert INTO #Dados VALUES ('2010-01-01', 3) insert INTO #Dados VALUES ('2010-03-01', 4) insert INTO #Dados VALUES ('2010-03-01', 5) SELECT count(CodFunc) QtdaFunc, DATEPART(MONTH, data) Mes FROM #Dados GROUP BY (DATEPART(MONTH, data))
-
Bom dia Mayco, você poderá fazer estes cálculos utilizando subselects. O mais interessante seria você postar alguns dados como exemplo.
-
Bom dia Ewerton, Por trigger, não tem como criar ou alterar views.
-
Import and Export Data.
-
Provavelmente não. Parece-me que o 2.0 é requsito mínimo. Dá uma olhada nas especificações do aplicativo (Datadmin).
-
Bom dia André, Dê uma olhada se em sua máquina está instalado o Microsoft.NET Framework. A versão mínima aí não vou saber... rs. Acho que é o 2.0...
-
Boa tarde Felipe, você pode fazer o seguinte: - Abra o Management Studio. - Abra o Object Explorer. - Clique botão direito do mouse no nome do Servidor / New DataBase. Crie o banco com o nome que deseja. - Clique botão direito do mouse em cima do nome do BD criado / Tasks / Import Data. - Abrirá um Wizard para importação de dados. - Escolha a origem o Access e o destino o SQL mesmo. Abrirá uma tela com todas as tabelas do arquivo mdb. Como vai fazer uma migração, selecione todas as tabelas. O único problema desta migração será as chaves e constraints... Se preferir, encontrará aplicativos para download que realizam esta migração pra você.
-
De nada. Precisando estamos ai!! :.)
-
Boa tarde Gabriel, No seu subselect é retornado dois valores "e.campaign, p.shortname". No resultado você tenta atribuir os valores à variável CP_NUM. Isto que está errado. O resultado do subselect só poderá retornar um valor, que será updatado no campo CP_NUM. Outra coisa: como não tem cláusula where do update, todos os campos CP_NUM receberão o valor de retorno do subselect.
-
Boa tarde Gabriel, você quer um script em VB6? Se for, terá que fazer: - Uma conexão ao banco, - Fazer o select e criar uma variável do tipo Recordset para armazenar dos dados de resultado do select. - Criar um loop (pode ser Do while) e a clásula será enquanto o recordset não chegar ao fim (Do while Recordset.EOF = False). - Não esquecer de mover o ponteiro do recordset para o próximo valor, sempre no final do loop (Recordset.MoveNext). Moverei seu post para o Forum de VB.
-
Boa tarde Antonio, Não tem jeito de fazer isto. É como dizer que o filho tem duas mães, ok? :.)
-
Bom dia Rodrigo, Abra o Management Studio. Clique em: - Nome Servidor / DataBases / Nome Banco / Security. - Na opção Users, clique com o botão direito do mouse / New User. Verifique se o usuário já se encontra criado. Caso não esteja, crie-o. :.)
-
Boa tarde Nelle, Para mostrar os navios que venceram mais de uma batalha não precisa necessariamente de uma View. você deverá utilizar um select do tipo: Select NAVIO, count(NAVIO) from TABELA group by NAVIO having count(NAVIO)>1
-
Boa tarde, Teoricamente os dados deveriam ser extraidos sem nenhum tipo de diferença (rs...). Verifique os scripts que geram os dados. Movimentos de caixas utilizam muitas somas. Em sql, sempre é bom ficar de olho nesta funcionalidade. Dependendo do script, a soma pode se exponencializar ao utilizar os agrupamentos. Isso pode mascarar o resultado. Em algumas implementações que julgar mais complexas, fazer sua separação em precessos menores. As vezes gasta-se mais tempo de processamento, mas a manutenção e detecção de erros ficam mais claras.
-
Hehehe, aí vai ter que rolar uma gambiarra (ou uma "Solução Alternativa" - igual fala um colega meu). A tabela de exemplo TABELAX é a mesma tanto no select como no subselect... SELECT * FROM TABELAX P WHERE p.Data= (select MAX(data) FROM TABELAX p1 where p.matricula= p1.matricula GROUP BY p1.matricula)
-
Boa tarde Rderoci, você pode fazer o agrupamento por Matrícula, pegando o max(DATA). Ai você conseguirá agrupar, pegando um único registro por matricula (sendo ele o mais recente). Mas tem uma obs.: para realizar o agrupamento, os campos VALOR1 e VALOR2 devem ficar de fora, porque senão não ocorrerá o agrupamento corretamente. Ficaria mais ou menos assim: select matricula, MAX(data) FROM TABELA GROUP BY matricula
-
rs... ok D.Wirti, disponha. PS.: Rodei o script que postei e deu certo... rs (está fora de ordem). Foram 7 inserções na tabela "#DadosEmpresa" e o resultado retorna oito (inserção de 1 segmento a mais). Colocarei o tópico como resolvido!! :.)
-
Bom dia D.Wirti, Existe sim outra solução. Fazer um UNION e tentar filtrar os dados faltantes para inserção. Fiz um exemplo logo abaixo. Dê uma olhada se funciona para o seu caso. -- criação de tabela temporária CREATE TABLE #DadosEmpresa (chave int, codigo INT, segmento VARCHAR(30)) CREATE TABLE #Cidades (chave int, cidade VARCHAR(30)) -- inserção INSERT INTO #Cidades VALUES (1, 'CIDADE A') INSERT INTO #Cidades VALUES (2, 'CIDADE B') INSERT INTO #DadosEmpresa VALUES (1, 3, 'Agropecuária') INSERT INTO #DadosEmpresa VALUES (1, 369, 'Comércio') INSERT INTO #DadosEmpresa VALUES (1, 15, 'Indústria') INSERT INTO #DadosEmpresa VALUES (1, 57, 'Serviço') INSERT INTO #DadosEmpresa VALUES (2, 1 , 'Agropecuária') INSERT INTO #DadosEmpresa VALUES (2, 196, 'Comércio') INSERT INTO #DadosEmpresa VALUES (2, 43 , 'Serviço') -- Conferencia SELECT * FROM #DadosEmpresa SELECT * FROM #Cidades -- Select SELECT Cidade, codigo,de.segmento FROM #Cidades c, #DadosEmpresa de WHERE de.chave=c.chave UNION SELECT Cidade, 0, de.segmento FROM #Cidades c, #DadosEmpresa de WHERE de.chave=c.chave and de.segmento IN (SELECT de.segmento FROM #Cidades c, #DadosEmpresa de WHERE de.chave=c.chave group by segmento HAVING COUNT(segmento)=1)