Rodrigo Hoffmann Postado Setembro 29, 2010 Denunciar Share Postado Setembro 29, 2010 (editado) OláEstou com um problemaIniciei a pouco tempo sql e estou com duvidas para criar um cursorA minha consulta que fiz me retorna por exemplo 50 codigos, cada um com seu numero eu gostaria de preencher com algum comando em sql os codigos nuloExemploMinha consulta retornou1 jose2 joao4 maria5 juca6 pedro9 marta10 fulanoetce gostaria que se não possui o codigo ele prenchesse então ficaria1 jose2 joao3 4 maria5 juca6 pedro7 89 marta10 fulanoetcEsperam que entendam, preciso de ajudaObrigado Editado Setembro 29, 2010 por Jonathan Queiroz Remover caixa alta do título conforme regra 3.7 (Jonathan) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Setembro 29, 2010 Denunciar Share Postado Setembro 29, 2010 Bom dia Rodrigo, Neste caso, não há necessidade de se criar um Cursor. Um While resolve o problema. Segue abaixo um exemplo: -- criação de tabela temporária CREATE TABLE #Nomes (Valor INT, Nome VARCHAR(50)) -- Inserção dos dados INSERT INTO #Nomes VALUES (1, 'jose') INSERT INTO #Nomes VALUES (2, 'joao') INSERT INTO #Nomes VALUES (4, 'maria') INSERT INTO #Nomes VALUES (5, 'juca') INSERT INTO #Nomes VALUES (6, 'pedro') INSERT INTO #Nomes VALUES (9, 'marta') INSERT INTO #Nomes VALUES (10, 'fulano') -- Selecionar todo o script, até o final. Executar. DECLARE @Contador INT SET @Contador = 1 WHILE @contador < (SELECT MAX (valor) FROM #Nomes) BEGIN IF (SELECT top 1 1 FROM #Nomes WHERE valor=@Contador) IS NULL INSERT INTO #Nomes VALUES (@Contador, '') SET @Contador = @Contador + 1 END -- Conferência SELECT * FROM #Nomes Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rodrigo Hoffmann Postado Setembro 29, 2010 Autor Denunciar Share Postado Setembro 29, 2010 Olá me ajude nunca trabalhei com esse metodo aindaminha consulta é essa, onde colocaria issoCREATE PROCEDURE DBO.[Formulario LFC_GERACAO_ARQUIVO_RECEITA_FEDERAL_431]( @PCodEmpresa INT, @PDataI DATETIME, @PDataF DATETIME)AS SELECT BAS_DOCUMENTO.NotaFiscalEntSai, BAS_DOCUMENTO.ModeloNotaCod, BAS_DOCUMENTO.NotaFiscalSerie, BAS_DOCUMENTO.NotaFiscalSubSerie, BAS_DOCUMENTO.NotaFiscalNumero, (SELECT REPLACE(CONVERT (VARCHAR(10), BAS_DOCUMENTO.NotaFiscalDataEmissao, 103), '/', '') AS numeric) AS NotaFiscalDataEmissao, BAS_DOCUMENTO.NotaFiscalEmpCodigo, (SELECT REPLACE(CONVERT (VARCHAR(10), BAS_DOCUMENTO.NotaFiscalDataLancamento, 103), '/', '') AS numeric) AS NotaFiscalDataLancamento, SUM(BAS_DOCUMENTO_REG_LAN.NFRLValorProdutos) AS TotalMercadoria, SUM(BAS_DOCUMENTO_REG_LAN.NFRLValorDesconto) AS TotalDesconto, SUM(BAS_DOCUMENTO_REG_LAN.NFRLValorFrete) AS TotalFrete, SUM(BAS_DOCUMENTO_REG_LAN.NFRLValorSeguro) AS TotalSeguro, (SELECT SUM(OUTRAS.NFRLOutrasIPI) FROM BAS_DOCUMENTO_REG_LAN AS OUTRAS INNER JOIN BAS_DOCUMENTO ON OUTRAS.NotaFiscalContador = BAS_DOCUMENTO.NotaFiscalContador INNER JOIN BAS_DOCUMENTO_HISTORICO ON OUTRAS.HistoricoCodigo = BAS_DOCUMENTO_HISTORICO.HistoricoCodigo INNER JOIN BAS_DOCUMENTO_MODELO ON BAS_DOCUMENTO.ModeloNotaCod = BAS_DOCUMENTO_MODELO.ModeloNotaCod INNER JOIN LFC_DOCUMENTO_OPERACAO ON BAS_DOCUMENTO_HISTORICO.CodigoNaturezaOperacao = LFC_DOCUMENTO_OPERACAO.CodigoNaturezaOperacao WHERE (OUTRAS.HistoricoCodigo in ('193301','193302','193307','135201','193303','135203','135204','135205','135206','135207','135208','135209','135210','130201','235202','235201')) AND (OUTRAS.NotaFiscalContador = BAS_DOCUMENTO_REG_LAN.NotaFiscalContador)) AS TotalDespesa, SUM(BAS_DOCUMENTO_REG_LAN.NFRLValorIPI) AS TotalIPI, '0' AS TotalICMS, SUM(BAS_DOCUMENTO_REG_LAN.NFRLValorContabil) AS TotalContabil, '00000000000000' AS SubsTributario, '000000000000000' AS ViaTransporte, (SELECT TOP 1 BAS_EMPRESA.EmpCódigo FROM BAS_EMPRESA WHERE BAS_EMPRESA.EmpFantasia = BAS_DOCUMENTO.EmpFantasiaTransportador) AS CodigoTransportador, NotaFiscalQuantidade, NotaFiscalEspecie, NotaFiscalPesoBruto, NotaFiscalPesoLiquido, (CASE WHEN ISNULL(BAS_DOCUMENTO.NotaFiscalFrete,0) = 1 THEN 'FOB' ELSE 'CIF' END) AS NotaFiscalFrete, NotaFiscalPlaca, 'N' AS Cancelado, '2' AS Fatura, (LTRIM(RTRIM(ISNULL(BAS_DOCUMENTO.NotaFiscalOBS,'')))+ISNULL(NotaFiscalDadosAdicionais,'')) AS ObservacaoFROM BAS_DOCUMENTO_REG_LAN INNER JOIN BAS_DOCUMENTO ON BAS_DOCUMENTO_REG_LAN.NotaFiscalContador = BAS_DOCUMENTO.NotaFiscalContador INNER JOIN BAS_DOCUMENTO_HISTORICO ON BAS_DOCUMENTO_REG_LAN.HistoricoCodigo = BAS_DOCUMENTO_HISTORICO.HistoricoCodigo INNER JOIN BAS_DOCUMENTO_MODELO ON BAS_DOCUMENTO.ModeloNotaCod = BAS_DOCUMENTO_MODELO.ModeloNotaCod INNER JOIN LFC_DOCUMENTO_OPERACAO ON BAS_DOCUMENTO_HISTORICO.CodigoNaturezaOperacao = LFC_DOCUMENTO_OPERACAO.CodigoNaturezaOperacao WHERE (BAS_DOCUMENTO_MODELO.ModeloNotaSintegra = 1) AND (BAS_DOCUMENTO.CodEmpresa = @PCodEmpresa) AND (LFC_DOCUMENTO_OPERACAO.NaturezaOperacaoTransICMS<>1) AND (BAS_DOCUMENTO.NotaFiscalDataLancamento BETWEEN CONVERT(DATETIME,@PDataI, 102) and CONVERT(DATETIME,@PDataF, 102)) AND (BAS_DOCUMENTO.NotaFiscalEntSai in ('E')) AND (BAS_DOCUMENTO.NotaFiscalEmpTipo in ('J')) AND (BAS_DOCUMENTO.ModeloNotaCod IN ('1','55','6','22','8'))GROUP BY BAS_DOCUMENTO.NotaFiscalEntSai, BAS_DOCUMENTO.ModeloNotaCod, BAS_DOCUMENTO.NotaFiscalSerie, BAS_DOCUMENTO.NotaFiscalSubSerie, BAS_DOCUMENTO.NotaFiscalNumero, BAS_DOCUMENTO.NotaFiscalDataEmissao, BAS_DOCUMENTO_REG_LAN.NotaFiscalContador, BAS_DOCUMENTO.NotaFiscalEmpCodigo, BAS_DOCUMENTO.NotaFiscalDataLancamento, BAS_DOCUMENTO.NotaFiscalOBS, BAS_DOCUMENTO.NotaFiscalDadosAdicionais, BAS_DOCUMENTO.EmpFantasiaTransportador, BAS_DOCUMENTO.NotaFiscalEspecie, BAS_DOCUMENTO.NotaFiscalPesoBruto, BAS_DOCUMENTO.NotaFiscalPesoLiquido, BAS_DOCUMENTO.NotaFiscalFrete, BAS_DOCUMENTO.NotaFiscalPlaca, BAS_DOCUMENTO.NotaFiscalQuantidadeUNION ALLSELECT BAS_DOCUMENTO.NotaFiscalEntSai, BAS_DOCUMENTO.ModeloNotaCod, BAS_DOCUMENTO.NotaFiscalSerie, BAS_DOCUMENTO.NotaFiscalSubSerie, BAS_DOCUMENTO.NotaFiscalNumero, (SELECT REPLACE(CONVERT (VARCHAR(10), BAS_DOCUMENTO.NotaFiscalDataEmissao, 103), '/', '') AS numeric) AS NotaFiscalDataEmissao, BAS_DOCUMENTO.NotaFiscalEmpCodigo, (SELECT REPLACE(CONVERT (VARCHAR(10), BAS_DOCUMENTO.NotaFiscalDataLancamento, 103), '/', '') AS numeric) AS NotaFiscalDataLancamento, SUM(BAS_DOCUMENTO_REG_LAN.NFRLValorProdutos) AS TotalMercadoria, SUM(BAS_DOCUMENTO_REG_LAN.NFRLValorDesconto) AS TotalDesconto, SUM(BAS_DOCUMENTO_REG_LAN.NFRLValorFrete) AS TotalFrete, SUM(BAS_DOCUMENTO_REG_LAN.NFRLValorSeguro) AS TotalSeguro, (SELECT SUM(OUTRAS.NFRLOutrasIPI) FROM BAS_DOCUMENTO_REG_LAN AS OUTRAS INNER JOIN BAS_DOCUMENTO ON OUTRAS.NotaFiscalContador = BAS_DOCUMENTO.NotaFiscalContador INNER JOIN BAS_DOCUMENTO_HISTORICO ON OUTRAS.HistoricoCodigo = BAS_DOCUMENTO_HISTORICO.HistoricoCodigo INNER JOIN BAS_DOCUMENTO_MODELO ON BAS_DOCUMENTO.ModeloNotaCod = BAS_DOCUMENTO_MODELO.ModeloNotaCod INNER JOIN LFC_DOCUMENTO_OPERACAO ON BAS_DOCUMENTO_HISTORICO.CodigoNaturezaOperacao = LFC_DOCUMENTO_OPERACAO.CodigoNaturezaOperacao WHERE (OUTRAS.HistoricoCodigo in ('193301','193302','193307','135201','193303','135203','135204','135205','135206','135207','135208','135209','135210','130201','235202','235201')) AND (OUTRAS.NotaFiscalContador = BAS_DOCUMENTO_REG_LAN.NotaFiscalContador)) AS TotalDespesa, SUM(BAS_DOCUMENTO_REG_LAN.NFRLValorIPI) AS TotalIPI, '0' AS TotalICMS, SUM(BAS_DOCUMENTO_REG_LAN.NFRLValorContabil) AS TotalContabil, '00000000000000' AS SubsTributario, '000000000000000' AS ViaTransporte, (SELECT TOP 1 BAS_EMPRESA.EmpCódigo FROM BAS_EMPRESA WHERE BAS_EMPRESA.EmpFantasia = BAS_DOCUMENTO.EmpFantasiaTransportador) AS CodigoTransportador, NotaFiscalQuantidade, NotaFiscalEspecie, NotaFiscalPesoBruto, NotaFiscalPesoLiquido, (CASE WHEN ISNULL(BAS_DOCUMENTO.NotaFiscalFrete,0) = 1 THEN 'FOB' ELSE 'CIF' END) AS NotaFiscalFrete, NotaFiscalPlaca, 'N' AS Cancelado, '2' AS Fatura, (LTRIM(RTRIM(ISNULL(BAS_DOCUMENTO.NotaFiscalOBS,'')))+ISNULL(NotaFiscalDadosAdicionais,'')) AS ObservacaoFROM BAS_DOCUMENTO_REG_LAN INNER JOIN BAS_DOCUMENTO ON BAS_DOCUMENTO_REG_LAN.NotaFiscalContador = BAS_DOCUMENTO.NotaFiscalContador INNER JOIN BAS_DOCUMENTO_HISTORICO ON BAS_DOCUMENTO_REG_LAN.HistoricoCodigo = BAS_DOCUMENTO_HISTORICO.HistoricoCodigo INNER JOIN BAS_DOCUMENTO_MODELO ON BAS_DOCUMENTO.ModeloNotaCod = BAS_DOCUMENTO_MODELO.ModeloNotaCod INNER JOIN LFC_DOCUMENTO_OPERACAO ON BAS_DOCUMENTO_HISTORICO.CodigoNaturezaOperacao = LFC_DOCUMENTO_OPERACAO.CodigoNaturezaOperacao WHERE (BAS_DOCUMENTO_MODELO.ModeloNotaSintegra = 1) AND (BAS_DOCUMENTO.CodEmpresa = @PCodEmpresa) AND (LFC_DOCUMENTO_OPERACAO.NaturezaOperacaoTransICMS<>1) AND (BAS_DOCUMENTO.NotaFiscalDataLancamento BETWEEN CONVERT(DATETIME,@PDataI, 102) and CONVERT(DATETIME,@PDataF, 102)) AND (BAS_DOCUMENTO.NotaFiscalEmpTipo in ('J')) AND (BAS_DOCUMENTO.NotaFiscalEntSai in ('S'))GROUP BY BAS_DOCUMENTO.NotaFiscalEntSai, BAS_DOCUMENTO.ModeloNotaCod, BAS_DOCUMENTO.NotaFiscalSerie, BAS_DOCUMENTO.NotaFiscalSubSerie, BAS_DOCUMENTO.NotaFiscalNumero, BAS_DOCUMENTO.NotaFiscalDataEmissao, BAS_DOCUMENTO.NotaFiscalEmpCodigo, BAS_DOCUMENTO.NotaFiscalDataLancamento, BAS_DOCUMENTO_REG_LAN.NotaFiscalContador, BAS_DOCUMENTO.NotaFiscalOBS, BAS_DOCUMENTO.NotaFiscalDadosAdicionais, BAS_DOCUMENTO.EmpFantasiaTransportador, BAS_DOCUMENTO.NotaFiscalEspecie, BAS_DOCUMENTO.NotaFiscalPesoBruto, BAS_DOCUMENTO.NotaFiscalPesoLiquido, BAS_DOCUMENTO.NotaFiscalFrete, BAS_DOCUMENTO.NotaFiscalPlaca, BAS_DOCUMENTO.NotaFiscalQuantidadeORDER BY 5, 6 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Setembro 29, 2010 Denunciar Share Postado Setembro 29, 2010 Bom dia Rodrigo, Neste caso você terá que criar uma temporária, inserir o resultado do select nesta temporária e depois utilizar a estrutura de loop que postei acima. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Rodrigo Hoffmann
Olá
Estou com um problema
Iniciei a pouco tempo sql e estou com duvidas para criar um cursor
A minha consulta que fiz me retorna por exemplo 50 codigos, cada um com seu numero eu gostaria de preencher com algum comando em sql os codigos nulo
Exemplo
Minha consulta retornou
1 jose
2 joao
4 maria
5 juca
6 pedro
9 marta
10 fulano
etc
e gostaria que se não possui o codigo ele prenchesse então ficaria
1 jose
2 joao
3
4 maria
5 juca
6 pedro
7
8
9 marta
10 fulano
etc
Esperam que entendam, preciso de ajuda
Obrigado
Editado por Jonathan QueirozRemover caixa alta do título conforme regra 3.7 (Jonathan)
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.