Sintax Near *=
Boa tarde Galera!
Estou com um relatório, que contém a função *= . Vi nas pesquisas que fiz que funcionava no SQL2000 como LEFT JOIN, mas que nas versões mais novas somente mudando a compatibilidade (o que não posso fazer) ou adequando a função LEFT JOIN.
Já tentei de todas as formas substituir essa linha com o problema mas só encontro casos com 2 tabelas e não estou sabendo aplicar na minha situação. Alguém poderia me ajudar.
Desde já agradeço.
SELECT PAC.PAC_NOME,
APQ.APQ_OSM_SERIE,
APQ.APQ_OSM_NUM,
PAC.PAC_SEXO,
OSM.OSM_DTHR,
OSM.OSM_OBS,
PAC.PAC_FONE,
PAC.PAC_REG,
PDC.PDC_COR,
PAC.PAC_PRONT,
PP.PRO_NOME PRO_NOME_PP,
DATEDIFF ( dd, PAC.PAC_NASC, GetDate () ) / 365 ,
PAC.PAC_CARTAO_SUS,
PAC.PAC_NOME_MAE,
APQ.APQ_USR_LOGIN,
PGT.PGT_TEXTO,
RPT.RPT_TEXTO,
RPA.RPA_RESPOSTA
FROM PAC, PDC, APQ, OSM, PGT, RPA, PRO PP, QST, RPT
WHERE ( APQ.APQ_QST_COD = QST.QST_COD ) AND
( PGT.PGT_QST_COD = QST.QST_COD ) AND
( RPA.RPA_APQ_COD = APQ.APQ_COD ) AND
( RPA.RPA_QST_COD = APQ.APQ_QST_COD ) AND
( RPA.RPA_PGT_COD = PGT.PGT_COD ) AND
( RPA.RPA_QST_COD = PGT.PGT_QST_COD ) AND
( RPA.RPA_PGT_COD = RPT.RPT_PGT_COD ) AND
( RPA.RPA_QST_COD = RPT.RPT_QST_COD ) AND
( RPA.RPA_RESPOSTA = RPT.RPT_MINIMO ) AND
( RPA.RPA_RESPOSTA *= RPT.RPT_MAXIMO ) AND
( PAC.PAC_PRO_COD = PP.PRO_COD ) AND
( APQ.APQ_OSM_SERIE = OSM.OSM_SERIE ) AND
( APQ.APQ_OSM_NUM = OSM.OSM_NUM ) AND
( PDC.PDC_PAC_REG = PAC.PAC_REG ) AND
( APQ.APQ_QUESTIONADO_N = PAC.PAC_REG ) AND
( APQ.APQ_OSM_NUM = :NUMERO ) AND
( APQ.APQ_OSM_SERIE = 118 )
ORDER BY PAC.PAC_NOME ASC
Estou com um relatório, que contém a função *= . Vi nas pesquisas que fiz que funcionava no SQL2000 como LEFT JOIN, mas que nas versões mais novas somente mudando a compatibilidade (o que não posso fazer) ou adequando a função LEFT JOIN.
Já tentei de todas as formas substituir essa linha com o problema mas só encontro casos com 2 tabelas e não estou sabendo aplicar na minha situação. Alguém poderia me ajudar.
Desde já agradeço.
SELECT PAC.PAC_NOME,
APQ.APQ_OSM_SERIE,
APQ.APQ_OSM_NUM,
PAC.PAC_SEXO,
OSM.OSM_DTHR,
OSM.OSM_OBS,
PAC.PAC_FONE,
PAC.PAC_REG,
PDC.PDC_COR,
PAC.PAC_PRONT,
PP.PRO_NOME PRO_NOME_PP,
DATEDIFF ( dd, PAC.PAC_NASC, GetDate () ) / 365 ,
PAC.PAC_CARTAO_SUS,
PAC.PAC_NOME_MAE,
APQ.APQ_USR_LOGIN,
PGT.PGT_TEXTO,
RPT.RPT_TEXTO,
RPA.RPA_RESPOSTA
FROM PAC, PDC, APQ, OSM, PGT, RPA, PRO PP, QST, RPT
WHERE ( APQ.APQ_QST_COD = QST.QST_COD ) AND
( PGT.PGT_QST_COD = QST.QST_COD ) AND
( RPA.RPA_APQ_COD = APQ.APQ_COD ) AND
( RPA.RPA_QST_COD = APQ.APQ_QST_COD ) AND
( RPA.RPA_PGT_COD = PGT.PGT_COD ) AND
( RPA.RPA_QST_COD = PGT.PGT_QST_COD ) AND
( RPA.RPA_PGT_COD = RPT.RPT_PGT_COD ) AND
( RPA.RPA_QST_COD = RPT.RPT_QST_COD ) AND
( RPA.RPA_RESPOSTA = RPT.RPT_MINIMO ) AND
( RPA.RPA_RESPOSTA *= RPT.RPT_MAXIMO ) AND
( PAC.PAC_PRO_COD = PP.PRO_COD ) AND
( APQ.APQ_OSM_SERIE = OSM.OSM_SERIE ) AND
( APQ.APQ_OSM_NUM = OSM.OSM_NUM ) AND
( PDC.PDC_PAC_REG = PAC.PAC_REG ) AND
( APQ.APQ_QUESTIONADO_N = PAC.PAC_REG ) AND
( APQ.APQ_OSM_NUM = :NUMERO ) AND
( APQ.APQ_OSM_SERIE = 118 )
ORDER BY PAC.PAC_NOME ASC
Douglas Jesus
Curtidas 0
Respostas
Daniel Araújo
15/11/2018
Olá Douglas!
Não sei se vai resolver porque não tenho a base de dados para testar. Mas vê aí se deu certo:
Não sei se vai resolver porque não tenho a base de dados para testar. Mas vê aí se deu certo:
SELECT PAC.PAC_NOME
,APQ.APQ_OSM_SERIE
,APQ.APQ_OSM_NUM
,PAC.PAC_SEXO
,OSM.OSM_DTHR
,OSM.OSM_OBS
,PAC.PAC_FONE
,PAC.PAC_REG
,PDC.PDC_COR
,PAC.PAC_PRONT
,PP.PRO_NOME PRO_NOME_PP
,DATEDIFF(DD, PAC.PAC_NASC, GETDATE()) / 365
,PAC.PAC_CARTAO_SUS
,PAC.PAC_NOME_MAE
,APQ.APQ_USR_LOGIN
,PGT.PGT_TEXTO
,RPT.RPT_TEXTO
,RPA.RPA_RESPOSTA
FROM RPA
INNER JOIN APQ
ON (RPA.RPA_APQ_COD = APQ.APQ_COD AND
RPA.RPA_QST_COD = APQ.APQ_QST_COD)
LEFT OUTER JOIN RPT
ON (RPA.RPA_RESPOSTA = RPT.RPT_MAXIMO AND
RPA.RPA_PGT_COD = RPT.RPT_PGT_COD AND
RPA.RPA_QST_COD = RPT.RPT_QST_COD AND
RPA.RPA_RESPOSTA = RPT.RPT_MINIMO)
INNER JOIN PGT
ON (RPA.RPA_PGT_COD = PGT.PGT_COD AND
RPA.RPA_QST_COD = PGT.PGT_QST_COD)
INNER JOIN PAC
ON APQ.APQ_QUESTIONADO_N = PAC.PAC_REG
INNER JOIN QST
ON (APQ.APQ_QST_COD = QST.QST_COD AND
PGT.PGT_QST_COD = QST.QST_COD)
INNER JOIN OSM
ON (APQ.APQ_OSM_SERIE = OSM.OSM_SERIE AND
APQ.APQ_OSM_NUM = OSM.OSM_NUM)
INNER JOIN PRO PP
ON PAC.PAC_PRO_COD = PP.PRO_COD
INNER JOIN PDC
ON PDC.PDC_PAC_REG = PAC.PAC_REG
WHERE APQ.APQ_OSM_NUM = :NUMERO
AND APQ.APQ_OSM_SERIE = 118
ORDER BY PAC.PAC_NOME ASC
GOSTEI 0