|
sql
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
What is (+) ?Hi, can you explain me what is the "(+)" on some lines below? How can it be
converted to SQL SERVER 2000/2005? Thanks! SELECT H.COD_UNIDADE_NEGOCIO, ST_APROVADO_SUPERVISOR, DATA_HORAS, QDE_HORAS, DESCR_PROJETO, DESCR_ATIVIDADE, NOME_FUNCIONARIO, N.DESCR_UNIDADE_NEGOCIO, TC.NUMERO_CAPEX, TC.DESCR_CAPEX FROM TS_HORAS H, TS_PROJETO P , TS_ATIVIDADE A, TS_FUNCIONARIO F, TS_NEGOCIO N, TS_CAPEX TC WHERE H.COD_ATIVIDADE=A.COD_ATIVIDADE AND H.COD_UNIDADE_NEGOCIO=N.COD_UNIDADE_NEGOCIO AND H.COD_MATRICULA=F.COD_MATRICULA AND H.COD_PROJETO=P.COD_PROJETO AND (DATA_HORAS >= '20030301') AND (DATA_HORAS <= '20030331') AND H.NUMERO_CAPEX=TC.NUMERO_CAPEX (+) AND H.ST_CAPITALIZAVEL <> 0 ORDER BY N.DESCR_UNIDADE_NEGOCIO, NOME_FUNCIONARIO, DATA_HORAS, DESCR_PROJETO, DESCR_ATIVIDADE
Show quote
"Paulo" <prbs***@uol.com.br> wrote in message (+) is the old-style Oracle syntax for an outer join. It's impossible to be news:%23KFC5LTMIHA.2064@TK2MSFTNGP06.phx.gbl... > Hi, can you explain me what is the "(+)" on some lines below? How can it > be converted to SQL SERVER 2000/2005? Thanks! > > SELECT H.COD_UNIDADE_NEGOCIO, ST_APROVADO_SUPERVISOR, > DATA_HORAS, QDE_HORAS, DESCR_PROJETO, DESCR_ATIVIDADE, > NOME_FUNCIONARIO, N.DESCR_UNIDADE_NEGOCIO, TC.NUMERO_CAPEX, > TC.DESCR_CAPEX FROM TS_HORAS H, TS_PROJETO P , > TS_ATIVIDADE A, TS_FUNCIONARIO F, TS_NEGOCIO N, TS_CAPEX TC > WHERE H.COD_ATIVIDADE=A.COD_ATIVIDADE AND > H.COD_UNIDADE_NEGOCIO=N.COD_UNIDADE_NEGOCIO AND > H.COD_MATRICULA=F.COD_MATRICULA AND > H.COD_PROJETO=P.COD_PROJETO AND > (DATA_HORAS >= '20030301') AND (DATA_HORAS <= '20030331') > AND H.NUMERO_CAPEX=TC.NUMERO_CAPEX (+) > AND H.ST_CAPITALIZAVEL <> 0 > ORDER BY N.DESCR_UNIDADE_NEGOCIO, NOME_FUNCIONARIO, DATA_HORAS, > DESCR_PROJETO, DESCR_ATIVIDADE > sure of the precise equivalent in standard SQL because your query doesn't use an alias for the DATA_HORAS column, which means we can't tell what table it belongs to. I think you you'll need something like the following: SELECT H.COD_UNIDADE_NEGOCIO, ST_APROVADO_SUPERVISOR, DATA_HORAS, QDE_HORAS, DESCR_PROJETO, DESCR_ATIVIDADE, NOME_FUNCIONARIO, N.DESCR_UNIDADE_NEGOCIO, TC.NUMERO_CAPEX, TC.DESCR_CAPEX FROM TS_HORAS H INNER JOIN TS_PROJETO P ON H.COD_PROJETO=P.COD_PROJETO INNER JOIN TS_ATIVIDADE A ON H.COD_ATIVIDADE=A.COD_ATIVIDADE INNER JOIN TS_FUNCIONARIO F ON H.COD_MATRICULA=F.COD_MATRICULA INNER JOIN TS_NEGOCIO N ON H.COD_UNIDADE_NEGOCIO=N.COD_UNIDADE_NEGOCIO LEFT OUTER JOIN TS_CAPEX TC ON H.NUMERO_CAPEX=TC.NUMERO_CAPEX WHERE DATA_HORAS >= '20030301' AND DATA_HORAS < '20030401' AND H.ST_CAPITALIZAVEL <> 0 ORDER BY N.DESCR_UNIDADE_NEGOCIO, NOME_FUNCIONARIO, DATA_HORAS, DESCR_PROJETO, DESCR_ATIVIDADE; Note also the change to the upper date range value and the use of < instead of <=. In SQL Server, DATETIME columns always include time as well as date so it's usually desirable not to exclude the hours after midnight in your date ranges. -- David Portas |
|||||||||||||||||||||||