Ir para conteúdo
Fórum Script Brasil

ricardo.bezerra

Membros
  • Total de itens

    30
  • Registro em

  • Última visita

Posts postados por ricardo.bezerra

  1. Bom dia!

     

    Tenho um script automatizado que, embora retorne o que preciso, por trazer informações d-1 e d-2, na virada do mês, não gera a informação desejada.

     

    Como posso corrigir esse problema?

     

    Agradeço à todos, desde já.

     

    Script utilizado:

     

    SET @dataI = now(); 
    SET @dataA = now()-1; 
    -- Esta primeira query extrai os dados referente a SPOT 
    SELECT 
      @dataI AS 'Data Referencia', 
           CASE 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 1 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 5 
              THEN 'A- 1~5' 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 6 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 15 
              THEN 'B- 6~15' 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 16 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 40 
              THEN 'C- 16~40' 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 41 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 90 
              THEN 'D- 41~90' 
              WHEN DATEDIFF(@dataI, data_vencimento) > 90 
              THEN 'E- >90' 
              ELSE 'NULL' 
           END 
              AS 'Faixa de atraso', 
           FORMAT( SUM( 
                 CASE 
                    WHEN ( (data_pagamento > @dataI) 
                   OR data_pagamento IS NULL 
                   OR baixados = 'NÃO') 
                    THEN valor_operacao 
                    ELSE 0 
                 END), 
              2, 'de_DE') AS 'Saldo', 
           FORMAT( SUM( 
                 CASE 
                    WHEN (data_pagamento =@dataI AND parcelado = 0) 
                    THEN valor_operacao 
                    ELSE 0 
                 END), 
              2,'de_DE')AS 'Pagamentos', 
              FORMAT( SUM( 
                 CASE 
                    WHEN (data_pagamento =@dataI AND parcelado = 1) 
                    THEN valor_operacao ELSE 0 
                 END), 
              2, 'de_DE') AS 'Parcelado', 
           FORMAT(SUM(ant.Saldo_Anterior),2,'de_DE') AS 'Saldo Anterior', 
               
           FORMAT( 
                SUM( 
                   CASE 
                      WHEN (data_pagamento >@dataI 
                            OR baixados = 'NÃO') 
                      THEN valor_operacao 
                      ELSE 0 
                   END) 
              - Sum(ant.Saldo_Anterior) 
              + SUM( 
                   CASE 
                      WHEN (data_pagamento = @dataI) 
                      THEN 
                         valor_operacao 
                      ELSE 
                         0 
                   END), 
              2, 'de_DE') AS 'Rolagem' 
               
     FROM tb_relatorio_transacao_diario 
      
     LEFT JOIN ( 
       SELECT idt_operacao, 
             FORMAT( SUM( CASE WHEN (data_pagamento >@dataA) 
                     OR data_pagamento IS NULL 
                     OR baixados = 'NÃO' 
                      THEN valor_operacao 
                      ELSE 0 
                   END), 2, 'de_DE') 
                AS 'Saldo_Anterior' 
       FROM tb_relatorio_transacao_diario 
        
       WHERE repasse_bloqueado = 'NãO' 
             AND data_vencimento <= @dataA 
             AND produto = 'SPOT' 
             AND data_cancelamento IS NULL 
             AND DATEDIFF(@dataA,data_vencimento) > 0 
      GROUP BY idt_operacao) ant 
      ON ant.idt_operacao = tb_relatorio_transacao_diario.idt_operacao 
              
           
     WHERE repasse_bloqueado = 'NãO' 
           AND data_vencimento <= @dataI 
           AND produto = 'SPOT' 
           AND data_cancelamento IS NULL 
           AND DATEDIFF(@dataI,data_vencimento) > 0 
            
    GROUP BY 
    (CASE 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 1 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 5 
              THEN 'a1~5' 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 6 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 15 
              THEN 'b6~15' 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 16 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 40 
              THEN 'c16~40' 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 41 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 90 
              THEN 'd41~90' 
              WHEN DATEDIFF(@dataI, data_vencimento) > 90 
              THEN 'e>90' 
              ELSE 'NULL' 
           END); 
    -- Esta segunda query retorna dados dos parcelados 
    SELECT 
      @dataI AS 'Data Referencia', 
           CASE 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 1 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 5 
              THEN 'A- 1~5' 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 6 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 15 
              THEN 'B- 6~15' 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 16 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 40 
              THEN 'C- 16~40' 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 41 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 90 
              THEN 'D- 41~90' 
              WHEN DATEDIFF(@dataI, data_vencimento) > 90 
              THEN 'E- >90' 
              ELSE 'NULL' 
           END 
              AS 'Faixa de atraso', 
           FORMAT( SUM( 
                 CASE 
                    WHEN ( (data_pagamento > @dataI) 
                   OR data_pagamento IS NULL 
                   OR baixados = 'NÃO') 
                    THEN valor_operacao 
                    ELSE 0 
                 END), 
              2, 'de_DE') AS 'Saldo', 
           FORMAT( SUM( 
                 CASE 
                    WHEN (data_pagamento = @dataI AND parcelado = 0) 
                    THEN valor_operacao 
                    ELSE 0 
                 END), 
              2,'de_DE')AS 'Pagamentos', 
              FORMAT( SUM( 
                 CASE 
                    WHEN (data_pagamento =@dataI AND parcelado = 1) 
                    THEN valor_operacao ELSE 0 
                 END), 
              2, 'de_DE') AS 'Parcelado', 
           FORMAT(SUM(ant.Saldo_Anterior),2,'de_DE') AS 'Saldo Anterior', 
               
           FORMAT( 
                SUM( 
                   CASE 
                      WHEN (data_pagamento >@dataI 
                            OR baixados = 'NÃO') 
                      THEN valor_operacao 
                      ELSE 0 
                   END) 
              - Sum(ant.Saldo_Anterior) 
              + SUM( 
                   CASE 
                      WHEN (data_pagamento = @dataI) 
                      THEN 
                         valor_operacao 
                      ELSE 
                         0 
                   END), 
              2, 'de_DE') AS 'Rolagem' 
               
     FROM tb_relatorio_transacao_diario 
      
     LEFT JOIN ( 
       SELECT idt_operacao, 
             FORMAT( SUM( CASE WHEN (data_pagamento >@dataA) 
                     OR data_pagamento IS NULL 
                     OR baixados = 'NÃO' 
                      THEN valor_operacao 
                      ELSE 0 
                   END), 2, 'de_DE') 
                AS 'Saldo_Anterior' 
       FROM tb_relatorio_transacao_diario 
        
       WHERE repasse_bloqueado = 'NãO' 
             AND data_vencimento <= @dataA 
             AND produto = 'SPOT' 
             AND data_cancelamento IS NULL 
             AND DATEDIFF(@dataA,data_vencimento) > 0 
      GROUP BY idt_operacao) ant 
      ON ant.idt_operacao = tb_relatorio_transacao_diario.idt_operacao 
              
           
     WHERE repasse_bloqueado = 'NãO' 
           AND data_vencimento <= @dataI 
           AND produto <> 'SPOT' 
           AND data_cancelamento IS NULL 
           AND DATEDIFF(@dataI,data_vencimento) > 0 
            
    GROUP BY 
    (CASE 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 1 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 5 
              THEN 'a1~5' 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 6 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 15 
              THEN 'b6~15' 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 16 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 40 
              THEN 'c16~40' 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 41 
                   AND (DATEDIFF(@dataI, data_vencimento)) <= 90 
              THEN 'd41~90' 
              WHEN DATEDIFF(@dataI, data_vencimento) > 90 
              THEN 'e>90' 
              WHEN DATEDIFF(@dataI, data_vencimento) >= 90 
              THEN 'f>90' 
              ELSE 'NULL' 
           END);

     

    Quando falo virada do mês quero dizer o seguinte:

     

    pega a data de hoje, por exemplo e a de ontem...então será nesse exemplo dias 21/10 e 20/10..ai vai até dia 31/10 e 30/10..quando entrar em novembro, pega dia 01/11 e "não traz" 31/10...só traz o dia 01/11, ou seja, ele isola mês a mês, porém, no mês retrasado (agosto) que tivemos 31 dias..ele entendeu que tinha 30 dias mesmo..então ele está separando mês a mês mas mantendo sempre 30 dias para cada mês..

    Ou seja, também não está rolando identificação se o mês têm 31, 30, 29 (ano bissexto) ou 28 dias.

    Se alguém puder dar uma direção ou souber de algum link que possa ajudar-me, já agradeço demais.

    Muito obrigado.

    Abraços

    Ricardo.

  2. Isso traz o que preciso:

    SELECT CONCAT(CAST(lello_locatario AS CHAR),';',CAST(lello_fiador AS CHAR)) Locatario_Fiador
            FROM lel_relatorio                                     Locatario_Fiador
    Locatario_Fiador
    0;0
    0;0
    0;0
    0;0
    1;0
    0;1
    0;0

    Mas seu coloco na query...ai critica que gera mais de uma linha:

    SELECT 
         lel_relatorio.id                                            IdRelatorio
        ,CAST(lel_relatorio.data_inclusao AS DATETIME)                DataConsulta
         ,lel_lello_analise.id_lello_analise                            IdAnalise
        ,lel_relatorio.id_pessoa_score                                IdPessoaScore
        ,lel_lello_analise.id_recomendacao                            IdRecomendacao
        ,(SELECT CONCAT(CAST(lello_locatario AS CHAR),';',CAST(lello_fiador AS CHAR)) Locatario_Fiador
            FROM lel_relatorio)                                     Locatario_Fiador
    FROM 
        pla_faturamento pla_faturamento
            LEFT JOIN
        lel_relatorio lel_relatorio 
                ON lel_relatorio.id_empresa = pla_faturamento.id_empresa
            LEFT JOIN
        lel_lello_analise lel_lello_analise 
                ON lel_lello_analise.id_empresa = lel_relatorio.id_empresa
            WHERE pla_faturamento.id_empresa = 7
        AND CAST(lel_relatorio.data_inclusao AS DATETIME) IS NOT NULL
    AND lel_relatorio.id >=
                            (SELECT
                                (MAX(id) * 0.999)
                             FROM
                                    lel_relatorio)
    GROUP BY lel_relatorio.lello_locatario
    ORDER BY
        lel_relatorio.data_inclusao
    15:34:38	SELECT    lel_relatorio.id           IdRelatorio  ,CAST(lel_relatorio.data_inclusao AS DATETIME)    DataConsulta   ,lel_lello_analise.id_lello_analise       IdAnalise  ,lel_relatorio.id_pessoa_score        IdPessoaScore  ,lel_lello_analise.id_recomendacao       IdRecomendacao  ,(SELECT CONCAT(CAST(lello_locatario AS CHAR),';',CAST(lello_fiador AS CHAR)) Locatario_Fiador   FROM lel_relatorio)          Locatario_Fiador FROM      pla_faturamento pla_faturamento         LEFT JOIN     lel_relatorio lel_relatorio     ON lel_relatorio.id_empresa = pla_faturamento.id_empresa   LEFT JOIN  lel_lello_analise lel_lello_analise     ON lel_lello_analise.id_empresa = lel_relatorio.id_empresa   WHERE pla_faturamento.id_empresa = 7  AND CAST(lel_relatorio.data_inclusao AS DATETIME) IS NOT NULL AND lel_relatorio.id >=       (SELECT        (MAX(id) * 0.999)        FROM         lel_relatorio) GROUP BY lel_relatorio.lello_locatario ORDER BY  lel_relatorio.data_inclusao LIMIT 0, 50000	Error Code: 1242. Subquery returns more than 1 row	5.148 sec
    

     

  3. Olá, a querie abaixo, funciona perfeita e rápida, porém, ao inserir os últimos "AND" com o período...ela trava, alguém pode dar dicas do porque e, como solucionar?

    Obrigado desde já.

    Últimos "AND":

     AND rel.data_inclusao BETWEEN '2015-15-04 00:00:00' AND '2015-15-04 23:59:59'

    Querie:

    SELECT 
         rel.id_relatorio
        ,rel.id_relatorio_retorno
        ,rel.data_inclusao AS dt_inc
        ,rel.documento
        ,caixa.texto AS id_filial
        ,filiais.loja
        ,caixa.valor AS caixa
        ,caixa.ativo AS ativo
        ,renda.renda_presumida AS renda
        ,score.valor_score AS valor_score
        ,pessoa.idade AS idade
        ,pessoa.situacao AS situacao
        ,msg.mensagem AS mensagem
        ,backoffice.valor AS bckoffice
        ,resultado.valor AS resutlado
        ,CASE WHEN backoffice.valor IS NULL THEN
    CASE WHEN rel.id_relatorio_retorno IS NULL THEN 'PDV-REUSO' ELSE 'PDV' 
                   END
        ELSE
            'ATENDIMENTO'
        END
    FROM
        dec_relatorio rel
            INNER JOIN
        pla_parametros caixa ON rel.id_relatorio = caixa.id_relatorio
            INNER JOIN
        pla_carrefour_filiais filiais ON caixa.texto = filiais.cod_sitef
            LEFT JOIN
        pla_mensagem as msg ON rel.id_relatorio = msg.id_relatorio and msg.id_empresa = 19
            LEFT JOIN
        pla_pessoa_cadastro as pessoa ON rel.id_relatorio = pessoa.id_relatorio
            LEFT JOIN
        pla_score as score ON rel.id_pessoa_score = score.id_score
            LEFT JOIN
        pla_renda_presumida_analise AS renda ON rel.id_renda_presumida_analise = renda.id_renda_presumida_analise AND renda.id_empresa = 19
            LEFT OUTER JOIN
       pla_parametros backoffice ON rel.id_relatorio = backoffice.id_relatorio AND backoffice.tipo = 'BACKOFFICE' AND backoffice.id_empresa = 19
            LEFT OUTER JOIN
        pla_parametros resultado ON rel.id_relatorio = resultado.id_relatorio AND resultado.tipo = 'RESULTADO' AND backoffice.id_empresa = 19
    WHERE
        1 = 1 AND caixa.tipo = 'CAIXA' AND rel.id_empresa = 19 AND caixa.id_empresa = 19 AND caixa.ativo = 1
        AND rel.data_inclusao BETWEEN '2015-15-04 00:00:00' AND '2015-15-04 23:59:59'

  4. Ficou mais ou menos assim, mas falta a condição no IF que não sei como fazer e não acho nada pra dar uma idéia:

    CREATE PROCEDURE `sp_parametros`() 
    BEGIN 
     IF [falta aquio update não funciona]????UPDATE test.Teste [falta aqui o update não funciona]???? THEN
    INSERT INTO test.BACKOFFICE (tipo_backoffice)
    SELECT tipo_teste FROM test.Teste 
    WHERE tipo_teste 
    IN('BACKOFFICE');
    INSERT INTO test.Monitoramento (tipo_monitoramento)
    SELECT tipo_teste FROM test.Teste 
    WHERE tipo_teste 
    IN('SCPC_END_DATE','SCPC_INIT_DATE','RENDA_END_DATE','RENDA_INIT_DATE',
      'SCORE_END_DATE','SCORE_INIT_DATE','CHEQUE_END_DATE','CHEQUE_INIT_DATE',
      'INIT_DATE','END_DATE');
    INSERT INTO test.PDV (tipo_pdv)
    SELECT tipo_teste FROM test.Teste 
    WHERE tipo_Teste 
    IN('CAIXA','OPERADOR','RESULTADO');
    END; 
  5. O resultado final seria esse, mas não funciona..tá errada...verifiquei e encontrei o que vai na linha 2...

    CREATE TRIGGER Parametros
    BEFORE UPDATE ON pla_parametros
    FOR EACH ROW
    BEGIN
    INSERT INTO
    test.BACKOFFICE (tipo_backoffice)
    SELECT tipo_teste FROM test.Teste WHERE tipo_teste = 'BACKOFFICE';
    INSERT INTO
    test.Monitoramento (tipo_monitoramento)
    SELECT tipo_teste FROM test.Teste 
    WHERE tipo_teste 
    IN('SCPC_END_DATE','SCPC_INIT_DATE','RENDA_END_DATE','RENDA_INIT_DATE','SCORE_END_DATE','SCORE_INIT_DATE','CHEQUE_END_DATE','CHEQUE_INIT_DATE','INIT_DATE',
      'END_DATE');
    INSERT INTO
    test.PDV (tipo_pdv)
    SELECT tipo_teste FROM test.Teste WHERE tipo_teste IN('CAIXA','OPERADOR','RESULTADO');
    END
  6. Pessoal, boa tarde!

    Sou novato em MySQL e gostaria de pedir ajuda pra funcionalidades de uma Trigger e Schedule..

    Trigger

    CREATE TRIGGER Parametros
    AFTER INSERT ON {AQUI VAI O QUE??????}
    FOR EACH ROW
    BEGIN
    INSERT INTO
    test.BACKOFFICE (tipo_backoffice)
    SELECT tipo_teste FROM test.Teste WHERE tipo_teste = 'BACKOFFICE';
    INSERT INTO
    test.Monitoramento (tipo_monitoramento)
    SELECT tipo_teste FROM test.Teste 
    WHERE tipo_teste 
    IN('SCPC_END_DATE','SCPC_INIT_DATE','RENDA_END_DATE','RENDA_INIT_DATE','SCORE_END_DATE','SCORE_INIT_DATE','CHEQUE_END_DATE','CHEQUE_INIT_DATE','INIT_DATE',
      'END_DATE');
    INSERT INTO
    test.PDV (tipo_pdv)
    SELECT tipo_teste FROM test.Teste WHERE tipo_teste IN('CAIXA','OPERADOR','RESULTADO')
    END;

    Schedule

    CREATE EVENT Tipos_Plataforma
    ON SCHEDULE AT EVERY 2 HOUR
    DO Parametros;

    Grato desde já.

    Abraços.

  7. Bom dia!

    Sou novo aqui e, preciso criar um bat para acessar SFTP e, copiar arquivo para uma pasta no diretório C:\ da minha estação. (Isso já ajuda muito).
    Se possível, preciso de um comando que, copie apenas um arquivo que, é d-1, mas ele muda o final do nome diariamente, por exemplo, arquivo_20140909, ai no dia seguinte arquivo_20140910...assim por diante...só que, dentro do SFTP existem vários arquivos com o nome e a data, inclusive a do dia, mas preciso apenas o d-1...e uma outra coisa, como não estará em um servidor, e sim em minha estação (máquina local), aos finais de semana não rodo, então, não precisa de uma regra pra fins de semana, ou seja, segundas puxa o arquivo do domingo..e nada específico para esses dias dos fins de semana, a não ser que precisem, mas ai acessam minha máquina e executam na mão...

    Bom, óbvio que não estou aqui exigindo ou implorando para fazerem, mas sim ajudarem...então, tentei algumas coisas:

    1- Criei um arquivo com extensão .bat com a seguinte linha de comando:

    ftp -s:SearchAndCopy.txt

    2- Depois criei o txt do arquivo .bat:

    open 10.49.242.20
    sysadm
    sysadm
    xcopy root/opt/avaya/pds/xfer/public/public/reports "C:\Valdinei\"
    pause
    bye

    Ambos salvei dentro da pasta Valdinei (não sei se pode, não pode ou se é indiferente)...executo e nada...ai coloco um comando pause no arquivo bat e dá inválido pra um monte de coisas, inclusive usuário e senha, mas está tudo correto e acesso normalmente de minha máquina pelo WinSCP.

    Pra finalizar, coloquei ftp nos arquivos que criei, porque não dava certo com SFTP e, não encontrei nada sobre SFTP por bat, apenas FTP, então não sei se é a mesma coisa ou não têm nada à ver um com o outro (quando me refiro aos comandos bat).

    Sistema operacional Windows 7 Professional SP 1

  8. Bom dia!

    Sou novo aqui e, preciso criar um bat para acessar SFTP e, copiar arquivo para uma pasta no diretório C:\ da minha estação. (Isso já ajuda muito).
    Se possível, preciso de um comando que, copie apenas um arquivo que, é d-1, mas ele muda o final do nome diariamente, por exemplo, arquivo_20140909, ai no dia seguinte arquivo_20140910...assim por diante...só que, dentro do SFTP existem vários arquivos com o nome e a data, inclusive a do dia, mas preciso apenas o d-1...e uma outra coisa, como não estará em um servidor, e sim em minha estação (máquina local), aos finais de semana não rodo, então, não precisa de uma regra pra fins de semana, ou seja, segundas puxa o arquivo do domingo..e nada específico para esses dias dos fins de semana, a não ser que precisem, mas ai acessam minha máquina e executam na mão...

    Bom, óbvio que não estou aqui exigindo ou implorando para fazerem, mas sim ajudarem...então, tentei algumas coisas:

    1- Criei um arquivo com extensão .bat com a seguinte linha de comando:

    ftp -s:SearchAndCopy.txt

    2- Depois criei o txt do arquivo .bat:

    open 10.49.242.20
    sysadm
    sysadm
    xcopy root/opt/avaya/pds/xfer/public/public/reports "C:\Valdinei\"
    pause
    bye

    Ambos salvei dentro da pasta Valdinei (não sei se pode, não pode ou se é indiferente)...executo e nada...ai coloco um comando pause no arquivo bat e dá inválido pra um monte de coisas, inclusive usuário e senha, mas está tudo correto e acesso normalmente de minha máquina pelo WinSCP.

    Pra finalizar, coloquei ftp nos arquivos que criei, porque não dava certo com SFTP e, não encontrei nada sobre SFTP por bat, apenas FTP, então não sei se é a mesma coisa ou não têm nada à ver um com o outro (quando me refiro aos comandos bat).

    Sistema operacional Windows 7 Professional SP 1

  9. Boa tarde!
    Pessoal, estou realizando uma consulta em três tabelas diferentes pelo período de dois anos (é para popular uma Fato), porém, para não ocorrer duplicidade de NFs eu sou obrigado a usar um DISTINCT, essa população está sendo feita via SSIS (SQL e SSIS 2012 em um pacote novo e meu, em minha estação). Ao realizar a query, depois de 1h53min ele "começa a ler" as linhas da base. Como posso otimizar? Segue a query:

    SELECT distinct
    sd.D2_FILIAL as CDEMPRESA,
    sd.D2_CLIENTE as COD_CLI2,
    sd.D2_PEDIDO as PED_VENDA2,
    sd.D2_PRCVEN as PRC_UNI_VENDA,
    sd.D2_TOTAL as PREC_TOT_VENDA,
    sd.D2_QUANT as QTDE_FATURADO,
    sd.D2_EMISSAO as DT_EMISSAO,
    sc.C5_NOTA as NOTA_FISCAL5,
    s.C6_DATFAT as DT_FATURAMENTO,
    s.C6_VALOR as VLR_FATURADO,
    sd.D2_XBIMARG as MARGEM,
    s.C6_MLDESCO as DESCONTO,
    sd.D2_TES as TES,
    s.C6_PRODUTO as COD_PROD FROM SD2010 as sd (nolock)
    left join SC5010 as sc on
    sd.D2_CLIENTE = sc.C5_CLIENTE
    left join SC6010 as s on
    sc.C5_NOTA = s.C6_NOTA
    WHERE sd.D_E_L_E_T_ <> '*'
    AND sd.D2_EMISSAO >= '2011-01-01'

    Obrigado a todos.
    Ricardo.

  10. Boa tarde!

    Estou tendo problemas para executar um bloco de códigos, mas não consigo entender realmente onde está o erro e muito menos corrigi-lo. Podem dar uma ajuda, por favor? porque na vdd ele até retorna informações e corretas, mas quando coloco ele no SSIS 2005 ele tá erro e não continua executando os demais blocos de código. Erro no SSIS: [Execute SQL Task] Error: Executing the query "IF(SELECT OBJECT_ID('TEMPDB..#transacoes_faturadas_atendimento')) IS NOT NULL DROP TABLE #transacoes_faturadas_atendimento SELECT * INTO #transacoes_faturadas_atendimento FROM datacare_ods..credit_transaction_billing (nolock) WHERE loaddate between '2013-07-14' and @loaddate_faturadas CREATE INDEX idx_bill ON #transacoes_faturadas_atendimento (BillRuleID) CREATE INDEX idx_cust ON #transacoes_faturadas_atendimento (CustomerID) CREATE INDEX idx_tra ON #transacoes_faturadas_atendimento (TransactionID) " failed with the following error: "Must declare the scalar variable "@loaddate_faturadas".". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

    Segue script rodado no SQL 2005:

    declare

    @loaddate_campaign smalldatetime

    declare

    @loaddate_notyet smalldatetime

    declare

    @loaddate_faturadas smalldatetime

    declare

    @loaddate_percentual smalldatetime

    declare

    @reference_period char(7)

    set

    @loaddate_campaign = (select max (loaddate) from datacare_ods..credit_campaign_provisioning (NOLOCK))

    set

    @loaddate_notyet = (select max (loaddate) from datacare_ods..credit_transaction_notyet (NOLOCK))

    set

    @loaddate_faturadas = (select max (loaddate) from datacare_ods..credit_transaction_billing (NOLOCK))

    set

    @loaddate_percentual = (select max (loaddate) from datacare_ods..credit_campaign_percentage (NOLOCK))

    set

    @reference_period = '2013-08' -->alterar para mes de atualizao

    IF

    (SELECT OBJECT_ID('TEMPDB..#fct_customer_campaign')) IS NOT NULL

    begin

    DROP

    TABLE #fct_customer_campaign end

    SELECT

    *

    INTO

    #fct_customer_campaign

    FROM

    datacare_ods

    ..credit_campaign_provisioning (NOLOCK)

    WHERE

    loaddate

    = @loaddate_campaign

    CREATE

    INDEX idx_bill ON #fct_customer_campaign (BillRuleID)

    CREATE

    INDEX idx_cust ON #fct_customer_campaign (CustomerID)

    CREATE

    INDEX idx_camp ON #fct_customer_campaign (CampaignID)

    IF

    (SELECT OBJECT_ID('TEMPDB..#transacoes_faturadas_atendimento')) IS NOT NULL

    begin

    DROP

    TABLE #transacoes_faturadas_atendimento end

    SELECT

    *

    INTO

    #transacoes_faturadas_atendimento

    FROM

    datacare_ods

    ..credit_transaction_billing (nolock)

    WHERE

    loaddate

    between '2013-07-14' and @loaddate_faturadas

    CREATE

    INDEX idx_bill ON #transacoes_faturadas_atendimento (BillRuleID)

    CREATE

    INDEX idx_cust ON #transacoes_faturadas_atendimento (CustomerID)

    CREATE

    INDEX idx_tra ON #transacoes_faturadas_atendimento (TransactionID)

    IF

    (SELECT OBJECT_ID('TEMPDB..#transacoes_notyed_atendimento')) IS NOT NULL

    begin

    DROP

    TABLE #transacoes_notyed_atendimento end

    SELECT

    *

    INTO

    #transacoes_notyed_atendimento

    FROM

    datacare_ods

    ..credit_transaction_notyet (NOLOCK)

    WHERE

    loaddate

    = @loaddate_notyet

    CREATE

    INDEX idx_bill ON #transacoes_notyed_atendimento (BillRuleID)

    CREATE

    INDEX idx_cust ON #transacoes_notyed_atendimento (CustomerID)

    CREATE

    INDEX idx_tra ON #transacoes_notyed_atendimento (TransactionID)

    IF

    (SELECT OBJECT_ID('TEMPDB..#Telecinejunho2013Campaign')) IS NOT NULL

    begin

    DROP

    TABLE #Telecinejunho2013Campaign end

    SELECT

    *

    INTO

    #Telecinejunho2013Campaign

    FROM

    #fct_customer_campaign a

    WHERE

    CampaignID

    = '3606'

    AND isAtendimento = 'Y'

    and

    exists (

    SELECT

    customerID

    FROM

    dbmii

    .[directv\etsonoha].CampanhaProdutos20130621 b

    WHERE

    a

    .CustomerID = b.CustomerID

    and Oferta = 'Telecine 3'

    and Falha = 'N'

    )

    SELECT

    convert(varchar(7), EstimatedBillingDate, 120) as [Ms Faturamento]

    ,cast(sum(price) as money) as [Total Campanhas]

    FROM

    #fct_customer_campaign a

    (NOLOCK)

    WHERE

    convert(varchar(7), EstimatedBillingDate, 120) >= @reference_period -- ms de referncia

    AND loaddate = @loaddate_campaign

    AND isAtendimento = 'Y'

    AND NOT EXISTS (

    SELECT

    1

    FROM

    #transacoes_notyed_atendimento b

    (NOLOCK)

    WHERE

    a

    .customerid = b.customerid

    and convert(varchar(7), a.EstimatedBillingDate, 120) = convert(varchar(7), b.EstimatedBillingDate, 120)

    and a.billruleid = b.billruleid

    and loaddate = @loaddate_notyet

    )

    AND NOT EXISTS (

    SELECT

    1

    FROM

    #transacoes_faturadas_atendimento c

    (NOLOCK)

    WHERE

    a

    .customerid = c.customerid

    and convert(varchar(7), a.EstimatedBillingDate, 120) = convert(varchar(7), c.BillingDate, 120)

    and a.billruleid = c.billruleid

    and loaddate = @loaddate_faturadas

    )

    GROUP

    BY

    convert(varchar(7), EstimatedBillingDate, 120)

    ORDER

    BY

    1

    IF

    (SELECT OBJECT_ID('TEMPDB..SELECT #fct_customer_campaign_1 ')) IS NOT NULL

    begin

    DROP

    TABLE #fct_customer_campaign_1

    end

    SELECT

    *

    INTO

    #fct_customer_campaign_1

    FROM

    datacare_ods

    ..credit_campaign_provisioning (NOLOCK)

    WHERE

    loaddate

    = @loaddate_campaign

    CREATE

    INDEX idx_bill ON #fct_customer_campaign_1 (BillRuleID)

    CREATE

    INDEX idx_cust ON #fct_customer_campaign_1 (CustomerID)

    CREATE

    INDEX idx_camp ON #fct_customer_campaign_1 (CampaignID)

    IF

    (SELECT OBJECT_ID('TEMPDB..SELECT #transacoes_faturadas_atendimento ')) IS NOT NULL

    begin

    DROP

    TABLE #transacoes_faturadas_atendimento_1 end

    SELECT

    *

    INTO

    #transacoes_faturadas_atendimento_1

    FROM

    datacare_ods

    ..credit_transaction_billing (nolock)

    WHERE

    loaddate

    between '2013-07-14' and @loaddate_faturadas

    CREATE

    INDEX idx_bill ON #transacoes_faturadas_atendimento_1 (BillRuleID)

    CREATE

    INDEX idx_cust ON #transacoes_faturadas_atendimento_1 (CustomerID)

    CREATE

    INDEX idx_tra ON #transacoes_faturadas_atendimento_1 (TransactionID)

    IF

    (SELECT OBJECT_ID('TEMPDB..SELECT #transacoes_notyed_atendimento ')) IS NOT NULL

    begin

    DROP

    TABLE #transacoes_notyed_atendimento end

    SELECT

    *

    INTO

    #transacoes_notyed_atendimento_2

    FROM

    datacare_ods

    ..credit_transaction_notyet (NOLOCK)

    WHERE

    loaddate

    = @loaddate_notyet

    CREATE

    INDEX idx_bill ON #transacoes_notyed_atendimento (BillRuleID)

    CREATE

    INDEX idx_cust ON #transacoes_notyed_atendimento (CustomerID)

    CREATE

    INDEX idx_tra ON #transacoes_notyed_atendimento (TransactionID)

    IF

    (SELECT OBJECT_ID('TEMPDB..SELECT ##FATURAMENTOCAMPANHAS ')) IS NOT NULL

    begin

    DROP

    TABLE ##FATURAMENTOCAMPANHAS end

    SELECT

    customerid,

    smsaccountid

    ,

    campaignid

    ,

    isatendimento

    ,

    convert(varchar(7), EstimatedBillingDate, 120) as [Ms Faturamento]

    ,cast(sum(price) as money) as [Total Campanhas]

    INTO

    ##FATURAMENTOCAMPANHAS

    FROM

    #fct_customer_campaign a

    (NOLOCK)

    WHERE

    convert(varchar(7), EstimatedBillingDate, 120) >= @reference_period -- ms de referncia

    AND loaddate = @loaddate_campaign

    AND isAtendimento = 'Y'

    AND NOT EXISTS (

    SELECT

    1

    FROM

    #transacoes_notyed_atendimento b

    (NOLOCK)

    WHERE

    a

    .customerid = b.customerid

    and convert(varchar(7), a.EstimatedBillingDate, 120) = convert(varchar(7), b.EstimatedBillingDate, 120)

    and a.billruleid = b.billruleid

    and loaddate = @loaddate_notyet

    )

    AND NOT EXISTS (

    SELECT

    1

    FROM

    #transacoes_faturadas_atendimento c

    (NOLOCK)

    WHERE

    a

    .customerid = c.customerid

    and convert(varchar(7), a.EstimatedBillingDate, 120) = convert(varchar(7), c.BillingDate, 120)

    and a.billruleid = c.billruleid

    and loaddate = @loaddate_faturadas

    )

    GROUP

    BY

    customerid

    ,

    smsaccountid

    ,

    campaignid

    ,

    isatendimento

    ,

    convert(varchar(7), EstimatedBillingDate, 120)

    ORDER

    BY

    1

    SELECT

    [ms faturamento], SUM([TOTAL CAMPANHAS]) AS TOTAL

    FROM

    ##FATURAMENTOCAMPANHAS

    WHERE

    CAMPAIGNID IN (3606)

    GROUP

    BY [MS FATURAMENTO]

    ORDER

    BY [MS FATURAMENTO]

    Retorno:

    (14183086 row(s) affected)

    (12611440 row(s) affected)

    (1376470 row(s) affected)

    (255754 row(s) affected)

    (14 row(s) affected)

    Msg 2714, Level 16, State 6, Line 136

    There is already an object named '#fct_customer_campaign_1' in the database.

    Grato desde já.

    Att,

    Ricardo.

  11. Bom dia!

    Criei um JOB no SSIS para buscar informações no Teradata e concorrentemente em planilhas Excel, porém, não consigo realizar essa operação, o meu JOB aceita apontamento ou para planilha ou para Teradata. Já tentei colocar em Sequence Container, colocar em Sequence Container diferentes, sem o Sequence Container e nada. Alguém pode ajudar?

    Se alguém puder falar por e-mail também, posso mandar uma cópia do meu JOB.

    Obrigado.

    Ricardo.

×
×
  • Criar Novo...