Ir para conteúdo
Fórum Script Brasil

fulvio

Moderadores
  • Total de itens

    1.218
  • Registro em

  • Última visita

Tudo que fulvio postou

  1. Boa tarde Rafael, rs... sem problemas... Assim não tem como, porque o horário 128:00:00 não existe. O sql não identificará com sendo uma data válida.
  2. Boa tarde Reinaldo, Verifique o tamanho do campo em que os dados estão sendo gravados. Faça o este alterando o tipo para varchar. Todas as linhas são inseridas no sql?
  3. Um exemplo: select DATEADD(hh, 5, getdate()) Se pegar 16:00:00 * 8, qual seria o resultado?
  4. Boa tarde Rafael, Apenas uma dúvida: você quer multiplicar a data por 8 ou acrescentar 8 horas? Porque pensando em data, se multiplicar por 8 você terá que levar em consideração os dias também, não somente a hora. O interessante que a data começará a se repetir a partir da 3ª vez que multiplicar.... 16:00 24:00 08:00 16:00 ..... ..... Se for acrescentar 8 horas, pode utilizar a função DATEADD. O erro ocorre porque você convert uma data em caracter. Depois você tenta multiplicar um caraceter por 8. Por isso ocorre o erro de tipo.
  5. rs.... com certeza fica mais fácil, pois a conervão será apenas para um formato. Precisando estamos ai!! :.)
  6. Ficaria mais ou menos assim: DECLARE @Cont AS INT SET @Cont = (SELECT COUNT(id) FROM Tabela WHERE MesBolsa1=10) SET @Cont = @Cont + (SELECT COUNT(id) FROM Tabela WHERE MesBolsa2=10) SET @Cont = @Cont + (SELECT COUNT(id) FROM Tabela WHERE MesBolsa3=10) SET @Cont = @Cont + (SELECT COUNT(id) FROM Tabela WHERE MesBolsa4=10) Select @Cont Neste caso você pega todas as linhas q possuem correlação com o mês 10.
  7. você terá que criar uma variável como contador e verificar todos os campos das colunas MesBolsaXX para saber o mês.
  8. Ok, mas se na coluna QtMesesPagar estiver 6? Aí terá que acrescentar mais colunas para as demais bolsas.... e assim por diante. Neste caso, a modelagem redunda os dados. Pensa se fosse parcelamento de carro em 60 vezes?
  9. Fica um pouco complicada a manipulação... segue um exemplo: CREATE TABLE #tabela (dia INT, hora int, minuto int) INSERT INTO #tabela (dia) SELECT DATEDIFF (hh,'2011-04-23 23:59', '2011-04-25 01:01') / 24 dia update #tabela SET hora=(SELECT DATEDIFF (mi,'2011-04-23 23:59', '2011-04-25 01:01') / 60 - (select dia FROM #tabela)*24) update #tabela SET minuto=((SELECT DATEDIFF (mi,'2011-04-23 23:59', '2011-04-25 01:01')) - ((select dia FROM #tabela)*24*60 + (select hora FROM #tabela)*60)) select * FROM #tabela OBS.: não fiz nenhum teste com outras datas. No horário de abertura de 24:00 hs, alterei para 23:59 hs por causa da formatação do sql.
  10. Bom dia Fernandinha, Olhando o modelo que passou, me chamou a atenção a modelagem... :.) As bolsas deveriam estar em uma coluna apenas. Desta forma, terá que verificar todas as linhas das 4 bolsas (colunas) para conseguir somar o mês.
  11. Bom dia Beto, Ok, entendi o q deseja. Neste caso, você poderá utilizar o CASE para testar os campos. Fiz um exemplo com o que passou: CREATE TABLE #tabela (CodMembro INT, NomeMembro VARCHAR(50), NomeVisitante VARCHAR(50)) INSERT INTO #tabela VALUES (499, 'JESUS', null) INSERT INTO #tabela VALUES (10001, NULL, 'Filho de Deus') INSERT INTO #tabela VALUES (100, 'Lucas', null) SELECT CodMembro, CASE WHEN NomeMembro IS NOT NULL THEN NomeMembro WHEN NomeVisitante IS NOT NULL THEN NomeVisitante end Nome FROM #tabela t
  12. Bom dia Vinicius, você terá que concatenar a data com a hora para realizar a diferença entre elas. Como você quer nos formatos de Dia / Hora / minuto, terá que fazer os cálculos.
  13. fulvio

    AJUDA COM SUM.

    Boa tarde Pri, Tente fazer os cálculos passo a passo, utilizando temporárias. As vezes a conta não dá o resultado esperado por causa dos agrupamentos utilizados. Crie uma temporária e vá fazendo as manipulções dos dados nela. Além de ficar mais fácil de compreender, a manutanção fical legal também!!
  14. Bom dia Beto, Para agrupar os campos, poderá utilizar o +. Ex.: NomeMembro + ' ' + NomeVisitante OBS.: O + quando é caracter é concatenado, mas quando é inteiro é somado.
  15. Bom dia Bizarro, Tópico movidio para: Fórum Script Brasil > Programação & Desenvolvimento > ASP
  16. Bom dia Helvis, O problema pode estar no Group By, campo MOVI.DATA_COMPRA. Se a data da compra tiver hora, minutos, segundos, o sql não irá agrupar. você também está utilizando o campo no between... dê uma olhada nas datas.
  17. Com certeza é a melhor solução mesmo. Via sql, as datas virão duplicadas, de acordo com a quantidade de linhas que retornar.
  18. Mas você quer quando retornar o resultado, vir um campo com a data da impressão?
  19. Bom dia Vicente, Seja bem vindo ao Forum!!! :.) No sql existe a função OPENROWSET que poderá utilizar: http://msdn.microsoft.com/pt-br/library/ms190312.aspx Outra forma de fazer seria criando um linked server para acesso às planilhas: http://imasters.com.br/artigo/3874/sql_ser...arquivos_texto/
  20. Bom dia Vinicius, Não entendi ao certo sua dúvida. Mas caso queira identificar a data/hora em que o script foi executado, poderá utilizar a função getdate() do sql.
  21. Bom dia Vinicius, Fazer cálculos no sql é bem complicado mesmo... rs. Tem uma funcionalidade bem interessante no sql, e quase ninguém sabe. Vale a pena a dica!!!! create TABLE dbo.Tabela (A INT, B INT, C as (A+B))
  22. Bom dia Caio, Para o sql 2008 não. No seu script, acrescentei um () q estava faltando. Alterei o EXEC para select. "Force" uma axecução para testes. Copie o resultado do select e execute no console. Olha se dá certo.... CREATE PROCEDURE SP_ELIMINA_BLOCK AS Declare @v_spid INT DECLARE @Sql VARCHAR(100) Set @v_spid = (SELECT spid FROM MASTER.DBO.SYSPROCESSES BLOCKING WHERE BLOCKING.BLOCKED = 0 AND EXISTS (SELECT 1 FROM MASTER.DBO.SYSPROCESSES BLOCKED WHERE BLOCKED.BLOCKED = BLOCKING.SPID )); Set @Sql = 'KILL ' + cast(@V_SPID AS VARCHAR) select (@Sql)
  23. Bom dia Ivan, Recursividade no sql é sempre crítico.... principalmente se você tem uma tabela que possui recursividade infinita. Mas vamos lá. Criei um exemplo com a tabela que passou. Está bem simples, mas dá para se ter uma idéia de como funciona. Espero que ajude: -- Criação da temporária CREATE TABLE #tabela (id INT, parent_id INT, nome VARCHAR(50)) -- Inserção dos dados insert into #tabela values (1 , null , 'registro 1') insert into #tabela values (2 , 1 , 'registro 1') insert into #tabela values (3 , 2 , 'registro 1') insert into #tabela values (4 , null , 'registro 2') insert into #tabela values (5 , 4 , 'registro 2') insert into #tabela values (6 , 3 , 'registro 1') insert into #tabela values (7 , 5 , 'registro 2') -- Rodar daqui até o final DECLARE @Cont AS INT DECLARE @Proximo INT DECLARE @Resultado AS VARCHAR(100) SET @Resultado = '' SET @Cont = 1 SET @Proximo = (SELECT parent_id FROM #tabela WHERE id=@Cont) WHILE @Cont <= (select MAX(id) FROM #tabela) BEGIN WHILE @Proximo IS NOT NULL BEGIN SET @Resultado = @Resultado + cast(@Proximo AS VARCHAR(2)) SET @Proximo = (SELECT parent_id FROM #tabela WHERE id=@Proximo) END SET @Cont = @Cont + 1 SET @Proximo = (SELECT id FROM #tabela WHERE id=@Cont) SET @Resultado = @Resultado + '|' END SELECT @Resultado
  24. Bom dia Vinicius, Tem como sim, mas a estrutura fica bem grande. Aí a manutenção fica mais complicada... Muitas pessoas tentam fazer um cálculo com alias, e depois utilizar o alias em outro cálculo. O problema é que o sql não identifica o alias como uma variável. Sendo assim, toda vez que quiser fazer referência ao alias, terá q copiar e colar o script que o gerou. Assim dará para você fazer o que deseja. O problema será a complexidade do script.
  25. Bom dia Leandro, O certo seria cada usuário ter o acesso específico à Base. Assim você poderá colocar privilégios e restrições para cada usuário. Confira usuário/senha da rede e do banco. Outra coisa: qual é o Windows?
×
×
  • Criar Novo...