Invertendo Resultado das Linhas em Colunas
26/03/2018
0
Galera, boa noite.
Preciso fazer com que esse comando abaixo me torne o resultado em invertendo as linhas em coluna, agrupando pelo EXAL_DS_FILHO.
Poderiam me ajudar? Vi que posso utilizar o PIVOT, porém não consegui.
SET DATEFORMAT DMY
SELECT -- CURFINAL.*,
CURFINAL.EXAL_DS_PAI,
CURFINAL.PCONV_DS,
CURFINAL.PAC_CD,
CURFINAL.PAC_NOME,
CURFINAL.SEL_DT,
CURFINAL.SEL_DT_MAXIMA,
(SELECT MET_DS FROM METODOLOGIA MET WHERE MET.MET_ID = CURFINAL.MET_ID_FINAL) MET_DS,
EXALFILHO.EXAL_DS AS EXAL_DS_FILHO,
RESL.RESL_VAL_RESULTADO,
GEXA.GEXA_DS,
UNI_SIMBOLO, UNI_DS
FROM
(
SELECT
EXALPAI.EXAL_DS AS EXAL_DS_PAI,
PCONV_DS,
CURITENS.*,
-- EXAL_ORDEM,
-- EXAL_MATERIAL_BIOLOGICO,
-- EXAL_RESULTADO_LAUDO,
PAC.PAC_NM + '' '' + PAC.PAC_SB AS PAC_NOME,
PAC.PAC_CD,
PAC.PAC_SEX,
SEXO.SEX_DS,
PAC_DT_NASCIMENTO,
PAC_OBITO,
PAC_DT_OBITO,
-- CLIN_DS, CLIN_CD,
CASE WHEN ISNULL(CURITENS.MET_ID,0) <> 0 THEN MET_ID
ELSE (SELECT MET_ID
FROM EXAME_LABORATORIAL_METODOLOGIA EMET
WHERE CURITENS.EXAL_ID_PAI = EMET.EXAL_ID
AND EMET_ORDEM =
(SELECT MIN(EMET_ORDEM)
FROM EXAME_LABORATORIAL_METODOLOGIA EMET
WHERE CURITENS.EXAL_ID_PAI = EMET.EXAL_ID)) END MET_ID_FINAL
FROM
(
SELECT CURPAC.*, ISEL.ISEL_ID, ISEL.EXAL_ID AS EXAL_ID_PAI,ISEL_OBS_RESULTADO,
CASE WHEN EXISTS (SELECT RELA_ID
FROM RESULTADO_EXAME_LAB_ASSINATURA RELA
WHERE RELA.ISEL_ID = ISEL.ISEL_ID) THEN ''T''
ELSE ''F''
END ASSINADO,
(SELECT MIN( MET_ID )
FROM RESULTADO_EXAME_LAB RESL
WHERE RESL.ISEL_ID = ISEL.ISEL_ID
) MET_ID
FROM
(
SELECT ''R'' AS TIPO_RESULTADO, PAC_ID,
SEL_DT, SEL_ID, MED_ID, CLIN_ID, PCONV_ID, SEL_DT_MAXIMA
FROM SOLICITACAO_EXAME_LABORATORIAL
WHERE --SEL_ID = 527967 and
PAC_ID = 108333 AND SEL_DT >= ''01/01/2000'' AND SEL_DT < ''01/05/2018'') CURPAC
INNER JOIN ITENS_SOLICITACAO_EXAME_LAB ISEL ON ISEL.SEL_ID = CURPAC.SEL_ID -- WHERE ISEL.EXAL_ID = 231
) CURITENS
INNER JOIN EXAMES_LABORATORIAIS EXALPAI ON EXALPAI.EXAL_ID = CURITENS.EXAL_ID_PAI
INNER JOIN PLANO_CONVENIO PCONV ON PCONV.PCONV_ID = CURITENS.PCONV_ID
INNER JOIN PACIENTE PAC ON PAC.PAC_ID = CURITENS.PAC_ID
INNER JOIN SEXO SEXO ON PAC.PAC_SEX = SEXO.SEX_CD
LEFT JOIN CLINICA CLIN ON CLIN.CLIN_ID = CURITENS.CLIN_ID
) CURFINAL
LEFT JOIN RESULTADO_EXAME_LAB RESL ON RESL.ISEL_ID = CURFINAL.ISEL_ID
LEFT JOIN EXAME_LAB_ITENS EXAI ON EXAI.EXAI_ID_FILHO = RESL.EXAL_ID AND EXAI.EXAL_ID = CURFINAL.EXAL_ID_PAI
LEFT JOIN EXAMES_LABORATORIAIS EXALFILHO ON RESL.EXAL_ID = EXALFILHO.EXAL_ID
LEFT JOIN GRUPO_EXAME GEXA ON GEXA.GEXA_ID = EXALFILHO.GEXA_ID
LEFT JOIN UNIDADES UNI ON UNI.UNI_ID = EXALFILHO.UNI_ID
ORDER BY EXAL_DS_PAI, EXAL_DS_filho, SEL_DT
--SEL_DT, EXAL_DS_filho -- GEXA.GEXA_ORDEM, EXAI.EXAI_ORDEM
Preciso fazer com que esse comando abaixo me torne o resultado em invertendo as linhas em coluna, agrupando pelo EXAL_DS_FILHO.
Poderiam me ajudar? Vi que posso utilizar o PIVOT, porém não consegui.
SET DATEFORMAT DMY
SELECT -- CURFINAL.*,
CURFINAL.EXAL_DS_PAI,
CURFINAL.PCONV_DS,
CURFINAL.PAC_CD,
CURFINAL.PAC_NOME,
CURFINAL.SEL_DT,
CURFINAL.SEL_DT_MAXIMA,
(SELECT MET_DS FROM METODOLOGIA MET WHERE MET.MET_ID = CURFINAL.MET_ID_FINAL) MET_DS,
EXALFILHO.EXAL_DS AS EXAL_DS_FILHO,
RESL.RESL_VAL_RESULTADO,
GEXA.GEXA_DS,
UNI_SIMBOLO, UNI_DS
FROM
(
SELECT
EXALPAI.EXAL_DS AS EXAL_DS_PAI,
PCONV_DS,
CURITENS.*,
-- EXAL_ORDEM,
-- EXAL_MATERIAL_BIOLOGICO,
-- EXAL_RESULTADO_LAUDO,
PAC.PAC_NM + '' '' + PAC.PAC_SB AS PAC_NOME,
PAC.PAC_CD,
PAC.PAC_SEX,
SEXO.SEX_DS,
PAC_DT_NASCIMENTO,
PAC_OBITO,
PAC_DT_OBITO,
-- CLIN_DS, CLIN_CD,
CASE WHEN ISNULL(CURITENS.MET_ID,0) <> 0 THEN MET_ID
ELSE (SELECT MET_ID
FROM EXAME_LABORATORIAL_METODOLOGIA EMET
WHERE CURITENS.EXAL_ID_PAI = EMET.EXAL_ID
AND EMET_ORDEM =
(SELECT MIN(EMET_ORDEM)
FROM EXAME_LABORATORIAL_METODOLOGIA EMET
WHERE CURITENS.EXAL_ID_PAI = EMET.EXAL_ID)) END MET_ID_FINAL
FROM
(
SELECT CURPAC.*, ISEL.ISEL_ID, ISEL.EXAL_ID AS EXAL_ID_PAI,ISEL_OBS_RESULTADO,
CASE WHEN EXISTS (SELECT RELA_ID
FROM RESULTADO_EXAME_LAB_ASSINATURA RELA
WHERE RELA.ISEL_ID = ISEL.ISEL_ID) THEN ''T''
ELSE ''F''
END ASSINADO,
(SELECT MIN( MET_ID )
FROM RESULTADO_EXAME_LAB RESL
WHERE RESL.ISEL_ID = ISEL.ISEL_ID
) MET_ID
FROM
(
SELECT ''R'' AS TIPO_RESULTADO, PAC_ID,
SEL_DT, SEL_ID, MED_ID, CLIN_ID, PCONV_ID, SEL_DT_MAXIMA
FROM SOLICITACAO_EXAME_LABORATORIAL
WHERE --SEL_ID = 527967 and
PAC_ID = 108333 AND SEL_DT >= ''01/01/2000'' AND SEL_DT < ''01/05/2018'') CURPAC
INNER JOIN ITENS_SOLICITACAO_EXAME_LAB ISEL ON ISEL.SEL_ID = CURPAC.SEL_ID -- WHERE ISEL.EXAL_ID = 231
) CURITENS
INNER JOIN EXAMES_LABORATORIAIS EXALPAI ON EXALPAI.EXAL_ID = CURITENS.EXAL_ID_PAI
INNER JOIN PLANO_CONVENIO PCONV ON PCONV.PCONV_ID = CURITENS.PCONV_ID
INNER JOIN PACIENTE PAC ON PAC.PAC_ID = CURITENS.PAC_ID
INNER JOIN SEXO SEXO ON PAC.PAC_SEX = SEXO.SEX_CD
LEFT JOIN CLINICA CLIN ON CLIN.CLIN_ID = CURITENS.CLIN_ID
) CURFINAL
LEFT JOIN RESULTADO_EXAME_LAB RESL ON RESL.ISEL_ID = CURFINAL.ISEL_ID
LEFT JOIN EXAME_LAB_ITENS EXAI ON EXAI.EXAI_ID_FILHO = RESL.EXAL_ID AND EXAI.EXAL_ID = CURFINAL.EXAL_ID_PAI
LEFT JOIN EXAMES_LABORATORIAIS EXALFILHO ON RESL.EXAL_ID = EXALFILHO.EXAL_ID
LEFT JOIN GRUPO_EXAME GEXA ON GEXA.GEXA_ID = EXALFILHO.GEXA_ID
LEFT JOIN UNIDADES UNI ON UNI.UNI_ID = EXALFILHO.UNI_ID
ORDER BY EXAL_DS_PAI, EXAL_DS_filho, SEL_DT
--SEL_DT, EXAL_DS_filho -- GEXA.GEXA_ORDEM, EXAI.EXAI_ORDEM
Renan Fagundes
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)