Ir para conteúdo
Fórum Script Brasil

ricardo.bezerra

Membros
  • Total de itens

    30
  • Registro em

  • Última visita

Tudo que ricardo.bezerra postou

  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. não estava com distinct, agora retorna assim: # LocatarioFiador1;00;00;1 Mas na query completa, não apenas na sub-query dá critica, dizendo que tem mais de um retorno, obviamente porque está retornando 4 linhas..
  3. Isso traz o que preciso: SELECT CONCAT(CAST(lello_locatario AS CHAR),';',CAST(lello_fiador AS CHAR)) Locatario_Fiador FROM lel_relatorio Locatario_FiadorLocatario_Fiador 0;0 0;0 0;0 0;0 1;0 0;1 0;0Mas 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_inclusao15: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
  4. tirar os joins e usar o where ajuda em alguma coisa?
  5. Por favor, precisava de um norte...não entendo como a querie funciona bem sem período de consulta e incluindo um único dia descamba.
  6. 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'
  7. 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;
  8. Denis, o correto seria eu criar uma trigger pra chamar uma procedure que realize esse procedimento então?
  9. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Outra coisa, o restante do comando está correto?
  10. Muito obrigado pelo retorno. Mas então não teria como schedular a trigger? Abs.
  11. Pessoal, na verdade coloquei update por ser exemplo, essa trigger teria que funcionar a cada duas horas automaticamente, por isso tentei a schedule, sepuderem ajudar também com o que preciso colocar na parte: Before... Obrigado. Abraços.
  12. 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
  13. 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.
  14. 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
  15. 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
  16. 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.
  17. 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.
  18. 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.
  19. Boa tarde...então, eu me matei a manhã toda achando que era esse o problema e na verdade, eu tinha feito uma besteira no meu script...não tinha fechado um parêntes, acredita?..que desatenção. Valeu e abraços.
  20. Quando quero realizar a execução de um pacote, ocorre a seguinte critica: Error at Data Flow Task Ole DB Command 712 SSIS: Error Code DTS_E_OLEDBERROR. An OLE DB Error has occurred. Error Code: 0X 80004005. O que pode ser o erro? Ricardo.
×
×
  • Criar Novo...