PChiesi 0 Denunciar post Postado Abril 29, 2010 Ola Galera esperta do Forum, venho aqui com um pedido de ajuda por estou muito encrencado Meu chefe pediu para mim transformar uma Query que estava em SQL para Oracle, porém eu estou encontrando dificuldades para isso, será que alguém poderia me ajudar? SELECT bg_bug_id AS "DEFEITO", BG_SUMMARY as "Nome", BG_RESPONSIBLE as "DETECTADO POR", BG_PRIORITY as "Prioridade", BG_USER_03 as "Status", BG_USER_10 as "Tempo em DS", BG_USER_04 as "Tempo em QA", CONVERT(datetime,bg_user_05,103) AS "DATA ABERTURA", CONVERT(datetime,bg_user_09,103) AS "DATA FECHAMENTO", CASE WHEN DATEDIFF(n,'01/01/2001',CONVERT(datetime,bg_user_09,103)) - DATEDIFF(n,'01/01/2001',CONVERT(datetime,bg_user_05,103)) >= '0' THEN DATEDIFF(n,'01/01/2001',CONVERT(datetime,bg_user_09,103)) - DATEDIFF(n,'01/01/2001',CONVERT(datetime,bg_user_05,103)) ELSE DATEDIFF(n,CONVERT(datetime,bg_user_05,103),getdate()) END AS "TEMPO EM MUNUTOS" FROM td.BUG /*GROUP BY bg_bug_id */ ORDER BY bg_bug_id ASC Tem mais 2 SELECT id_defeito, --DATEDIFF(n,CONVERT(datetime,dt_abertura_defeito,103),CONVERT(datetime,dt_fechamento_defeito,103)) as "tempo_defeito", usuario, status_antigo, status_novo, CASE WHEN CONVERT(datetime,data_inicio,103) IS NOT NULL THEN CONVERT(datetime,data_inicio,103) ELSE CONVERT(datetime,dt_abertura_defeito,103) END as "data_inicio", CONVERT(datetime,data_fim,103) as "data_fim", DATEDIFF( n, CASE WHEN CONVERT(datetime,data_inicio,103) IS NOT NULL THEN CONVERT(datetime,data_inicio,103) ELSE CONVERT(datetime,dt_abertura_defeito,103) END, CONVERT(datetime,data_fim,103) ) as "tempo_atividade" FROM ( SELECT bd_base_aux.au_entity_id as "id_defeito", bd_base_aux.data_abertura as "dt_abertura_defeito", bd_base_aux.data_fechamento as "dt_fechamento_defeito", au_user as "usuario", ap_old_value as "status_antigo", ap_new_value as "status_novo", ( SELECT bd_select_aux.au_time FROM ( SELECT row_number() OVER( ORDER BY CONVERT("integer",alog_enc.au_entity_id) ASC, alog_enc.au_time ASC ) as "num_linha", CONVERT("integer",alog_enc.au_entity_id) as "au_entity_id", alog_enc.au_time FROM td.AUDIT_LOG "alog_enc" , td.AUDIT_PROPERTIES "aprop_enc" WHERE aprop_enc.ap_action_id = alog_enc.au_action_id and aprop_enc.ap_field_name = 'BG_USER_03' ) as "bd_select_aux" WHERE bd_select_aux.au_entity_id = bd_base_aux.au_entity_id and bd_select_aux.num_linha = (bd_base_aux.num_linha - '1') ) as "data_inicio", bd_base_aux.au_time as "data_fim" FROM ( SELECT row_number() OVER( ORDER BY CONVERT("integer",alog.au_entity_id) ASC, alog.au_time ASC ) as "num_linha", CONVERT("integer",alog.au_entity_id) as "au_entity_id", alog.au_user, aprop.ap_old_value, aprop.ap_new_value, bug.bg_user_05 as "data_abertura", bug.bg_user_09 as "data_fechamento", alog.au_time FROM td.AUDIT_LOG "alog" LEFT JOIN td.BUG "bug" ON alog.AU_ENTITY_ID = bug.BG_BUG_ID , td.AUDIT_PROPERTIES "aprop" WHERE aprop.ap_action_id = alog.au_action_id and aprop.ap_field_name = 'BG_USER_03' ) as "bd_base_aux" ) as "bd_auxiliar" ORDER BY id_defeito ASC Mais 1 SELECT AU_ENTITY_ID as "ID", AU_USER as "Detectado por", AP_OLD_VALUE as "Status Anterior", AP_NEW_VALUE as "Novo Status", AU_TIME as "Alterado em" FROM td.AUDIT_LOG , td.AUDIT_PROPERTIES WHERE AP_ACTION_ID=AU_ACTION_ID and AP_FIELD_NAME = 'BG_USER_03' ORDER BY convert("integer",AU_ENTITY_ID) ASC, AU_TIME ASC Então, elas fazem o seguinte, a primeira pega e calcula o tempo em que ficou aberto o DEFEITO nos status de QA e de DS O segundo, mostra o tempo em cada Status O terceiro mostra a transição de status. Se alguém puder ajudar, agradeço muito PS: O Forum não me deixa formatar para ficar tudo alinhado no post Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 29, 2010 Quais as funções em que você tem dúvida ? Compartilhar este post Link para o post Compartilhar em outros sites
PChiesi 0 Denunciar post Postado Abril 29, 2010 Quais as funções em que você tem dúvida ? Então cara, tem algumas que não temos no Oracle, com por exemplo o DateDiff, que no caso é uma mão na roda no SQL, e para ser sincero eu conheço muito pouco mesmo de Oracle, então eu não sei lhe informar quais funções tem como aproveitar =/ E detalhe, eu tenho que fazer isso pra amanhã de manhã, e eu nem sou da parte de banco de dados, sou da customização de QC, ou seja, estou na roça Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 29, 2010 Dicas : Diferença de datas , faça uma mesmos a outro terá em dias. to_char - converte data para char to_date converte date para char || concatena string ex: a || b rownum - número da linha no select rowid - endreço da linha sysdate - data do sistema user - usuário Espero que ajude.... Compartilhar este post Link para o post Compartilhar em outros sites
PChiesi 0 Denunciar post Postado Maio 3, 2010 Tem como deletar este tópico? problema foi resolvido Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 3, 2010 Seria legal publicar a solução pode ajudar alguém com o mesmo problema. Sinto não poder ter te ajudado. Compartilhar este post Link para o post Compartilhar em outros sites