SQL Server - optimizar este query usando variables tipo tabla

 
Vista:

optimizar este query usando variables tipo tabla

Publicado por junior (1 intervención) el 06/10/2006 14:49:00
hola a todos como lo haria con variables tipo tabla .
procedure prosp_reporte_control_calidad
as

SELECT PSF_NUMORD ,
PSF_NUMITM,
PSF_NUMPZA,
POFA_DESCRI,
CLI_RAZSOC,
OTRA_FECAUT,
DOFA_FECTERM,
POFA_PLAFUN,
POFA_CODNOR,
'PI_FUND'=COALESCE(( SELECT SUM(COALESCE(FUPI_CANFUN,0))
FROM FUN_PIEZA (NOLOCK)
WHERE FUPI_NUMORD = PSF_NUMORD AND
FUPI_NUMITM = PSF_NUMITM AND
FUPI_NUMPZA = PSF_NUMPZA ),0),
'moldeada' = coalesce(( select sum(coalesce( pcpm_cantpiezas ,0))
from PCP_PRODUCCION_MOLDEO (nolock)
where pcpm_numord = PSF_NUMORD and
pcpm_numitm = PSF_NUMITM and
pcpm_numpza = PSF_NUMPZA ),0),
'MAQUINA' = DBO.FNPROD_DEVUELVE_MAQUINA(POFA_NUMORD, POFA_NUMITM),
'ORIGEN' ='FUND',
'OT' = CONVERT(VARCHAR(60),PSF_NUMORD+' - '+CONVERT(VARCHAR(20),PSF_NUMITM)+' - '+CONVERT(VARCHAR(20),PSF_NUMPZA)),
'ORIGEN1' = COALESCE(CLI_NACION,'N'),
'MEC'= (SELECT COUNT(SOFA_CODSEC) FROM SEC_ORDENTRA_FA (NOLOCK) WHERE SOFA_NUMORD = pofa_NUMORD AND SOFA_NUMITM = pofa_NUMITM AND SOFA_NUMPZA = pofa_NUMPZA AND SOFA_CODSEC ='004'),
'ent_LIMP'= ( SELECT sum (coalesce(PSFL_CANTIDAD, 0))
FROM PCP_SEGUIMIENTO_FUN_LIM (NOLOCK)
WHERE PSFL_NUMORD = pofa_numord AND
PSFL_NUMITM = pofa_numitm AND
PSFL_NUMPZA = pofa_numpza),
'rec_limp' = (select sum(coalesce(prl_cantid,0))
from pcp_recepcion_limpieza (nolock)
where prl_numord = pofa_numord and
prl_numitm = pofa_numitm and
prl_numpza = pofa_numpza ),
pofa_peskil,
pofa_cantid,
pofa_codmodelo,
'psf_entlimp'= coalesce(psf_entlimp,0)
into ##rep_control_calidad
FROM PCP_SEGUIMIENTO_FUNDICION (NOLOCK), PZA_ORDENTRA_FA (NOLOCK), DET_ORDENTRA_FA (NOLOCK), CAB_ORDENTRA (NOLOCK), CLIENTE (NOLOCK)
WHERE POFA_NUMORD = PSF_NUMORD AND
POFA_NUMITM = PSF_NUMITM AND
POFA_NUMPZA = PSF_NUMPZA AND
POFA_TIPPZA IN ('PF','PS') AND
DOFA_NUMORD = POFA_NUMORD AND
DOFA_NUMITM = POFA_NUMITM AND
OTRA_NUMERO = DOFA_NUMORD AND
COALESCE (OTRA_ESTADO,'')<> 'A' AND
CLI_CODIGO = OTRA_CODCLI and
COALESCE(POFA_LIQUIDA,0)= 0 and
coalesce(pofa_anulada,0) <>1

insert into ##rep_control_calidad

SELECT PCSL_NUMORD ,
PCSL_NUMITM,
PCSL_NUMPZA,
POFA_DESCRI,
CLI_RAZSOC,
OTRA_FECAUT,
DOFA_FECTERM,
POFA_PLAFUN,
POFA_CODNOR,
'PI_FUND'=COALESCE(( SELECT SUM(COALESCE(FUPI_CANFUN,0))
FROM FUN_PIEZA (NOLOCK)
WHERE FUPI_NUMORD = PCSL_NUMORD AND
FUPI_NUMITM = PCSL_NUMITM AND
FUPI_NUMPZA = PCSL_NUMPZA ),0),
'moldeada' = coalesce(( select sum(coalesce( pcpm_cantpiezas ,0))
from PCP_PRODUCCION_MOLDEO (nolock)
where pcpm_numord = PCSL_NUMORD and
pcpm_numitm = PCSL_NUMITM and
pcpm_numpza = PCSL_NUMPZA ),0),
'MAQUINA' = DBO.FNPROD_DEVUELVE_MAQUINA(PCSL_NUMORD, PCSL_NUMITM),
'ORIGEN' ='LIM',
'OT' = CONVERT(VARCHAR(60),PCSL_NUMORD+' - '+CONVERT(VARCHAR(20),PCSL_NUMITM)+' - '+CONVERT(VARCHAR(20),PCSL_NUMPZA)),
'ORIGEN1' = COALESCE(CLI_NACION,'N'),
'MEC'= (SELECT COUNT(SOFA_CODSEC) FROM SEC_ORDENTRA_FA (NOLOCK) WHERE SOFA_NUMORD = pofa_NUMORD AND SOFA_NUMITM = pofa_NUMITM AND SOFA_NUMPZA = pofa_NUMPZA AND SOFA_CODSEC ='004'),
'ent_LIMP'= ( SELECT sum (coalesce(PSFL_CANTIDAD, 0))
FROM PCP_SEGUIMIENTO_FUN_LIM (NOLOCK)
WHERE PSFL_NUMORD = pofa_numord AND
PSFL_NUMITM = pofa_numitm AND
PSFL_NUMPZA = pofa_numpza),
'rec_limp' = (select sum(coalesce(prl_cantid,0))
from pcp_recepcion_limpieza (nolock)
where prl_numord = pofa_numord and
prl_numitm = pofa_numitm and
prl_numpza = pofa_numpza ),
pofa_peskil,
pofa_cantid,
pofa_codmodelo,
(SELECT coalesce(psf_entlimp,0)
FROM PCP_SEGUIMIENTO_FUNDICION (NOLOCK)
WHERE PSF_NUMORD = PCSL_NUMORD AND
PSF_NUMITM = PCSL_NUMITM AND
PSF_NUMPZA = PCSL_NUMPZA)
FROM PCP_SEGUIMIENTO_LIMPIEZA (NOLOCK), PZA_ORDENTRA_FA (NOLOCK), DET_ORDENTRA_FA (NOLOCK), CAB_ORDENTRA (NOLOCK), CLIENTE (NOLOCK)
WHERE POFA_NUMORD = PCSL_NUMORD AND
POFA_NUMITM = PCSL_NUMITM AND
POFA_NUMPZA = PCSL_NUMPZA AND
POFA_TIPPZA IN ('PF','PS') AND
DOFA_NUMORD = POFA_NUMORD AND
DOFA_NUMITM = POFA_NUMITM AND
OTRA_NUMERO = DOFA_NUMORD AND
COALESCE (OTRA_ESTADO,'')<> 'A' AND
CLI_CODIGO = OTRA_CODCLI and
coalesce(pofa_anulada,0) <>1 and
COALESCE(POFA_LIQUIDA,0)= 0


select psf_numord,
psf_numitm,
psf_numpza,
'pofa_descri'= max(pofa_descri),
'cli_razsoc'=max(cli_razsoc),
'otra_fecaut'=max(otra_fecaut),
'dofa_fecterm'=max(dofa_fecterm),
'pofa_plafun'= max(pofa_plafun),
'pofa_codnor'=max(pofa_codnor),
'pi_fund'=max(pi_fund),
'moldeada'=max(moldeada),
'maquina'=max(maquina),
'origen'=max(origen),
ot,
'ORIGEN1'= MAX(ORIGEN1),
'Mec' = max(mec),
'ent_LIMP'= max(ent_LIMP),
'rec_limp' = max(rec_limp),
'pofa_peskil'= max(pofa_peskil),
'pofa_cantid' = max(pofa_cantid),
'pofa_codmodelo' = max(pofa_codmodelo),
'psf_entlimp'= max(psf_entlimp)
into ##rep_control_calidad_1
from ##rep_control_calidad
group by psf_numord,
psf_numitm,
psf_numpza, ot

select pncd_numord,
pncd_numitm,
pncd_numpza,
pncd_cantobs,
pncd_cantcha,
pncd_resultado,
pncd_nroconfor,
pncd_motivo,
'pnc_cierre'= COALESCE(pnc_cierre,0)
into ##temp_confor
from ##rep_control_calidad_1,pcp_no_conformidad_det, pcp_no_conformidad
where psf_numord = pncd_numord and
psf_numitm = pncd_numitm and
psf_numpza = pncd_numpza and
pnc_nroconfor = pncd_nroconfor

select psf_numord,
psf_numitm,
psf_numpza,
pofa_descri,
cli_razsoc,
otra_fecaut,
dofa_fecterm,
pofa_plafun,
pofa_codnor,
pi_fund,
moldeada,
maquina,
origen,
ot,
pncd_numord,
pncd_numitm,
pncd_numpza,
pncd_cantobs,
pncd_cantcha,
pncd_resultado,
pncd_nroconfor,
pncd_motivo,
ORIGEN1,
mec, 'ent_limp'=coalesce(ent_limp,0),'rec_limp'=coalesce(rec_limp ,0),
pofa_peskil,
pofa_cantid,
pofa_codmodelo,
psf_entlimp,
pnc_cierre
from ##rep_control_calidad_1,##temp_confor
where psf_numord *= pncd_numord and
psf_numitm *= pncd_numitm and
psf_numpza *= pncd_numpza
group by psf_numord,
psf_numitm,
psf_numpza,
pofa_descri,
cli_razsoc,
otra_fecaut,
dofa_fecterm,
pofa_plafun,
pofa_codnor,
pi_fund,
moldeada,
maquina,
origen,
ot,
pncd_numord,
pncd_numitm,
pncd_numpza,
pncd_cantobs,
pncd_cantcha,
pncd_resultado,
pncd_nroconfor,
pncd_motivo,
ORIGEN1, mec, ent_limp,rec_limp , pofa_peskil,
pofa_cantid,
pofa_codmodelo,
psf_entlimp, pnc_cierre
drop table ##rep_control_calidad
drop table ##rep_control_calidad_1
drop table ##temp_confor
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder