J'ai un procédé stocké comme suit. Ma question est peut moi emploient des tables de #tmp_ (#tmp_initial_RMD_candidates) pour insérer des données intermédiaires et puis pour charger les données finales dans une table de « tp_ » qui sera employée pour produire d'un rapport ? le If de ********* du de ********** du de ********** du de ********** du de ********** du de ********** du de ********** du de ************************** du EXISTE (CHOISIR * À PARTIR D'INFORMATION_SCHEMA.TABLES OÙ TABLE_SCHEMA = « dbo » ET TABLE_NAME = « tp_rmd_rpt ") le tp_rmd_rpt GO IF de TABLE de BAISSE du EXISTE (nom CHOISI du sysindexes OÙ nom = « ix01 ») l'INDEX tp_rmd_rpt.ix01 GO de BAISSE du --laisser tomber la table dbo.tp_rmd_rpt (prsn_id international, pers_id international, ss_nr du tp_rmd_rpt create de table de de de varchar (9), fst_nm de varchar (20), mid_nm de varchar (20), last_nm de varchar (20), char de sfx_cd de (4), date-heure de brth_dt de , date-heure de deth_dt de , -- vieillir la décimale (4.1), l'index ix01 du GO create du datetime du RMD_dt) sur l'objet de ****** du GO /de tp_rmd_rpt (pers_id) : StoredProcedure [dbo]. [date de manuscrit de csp_rmd_rpt] : 06/02/2010 7h24 : 22 objet du * de **** du de ********** du de ********** du de ********** du de ********** du de ********** du de ********** du de ********** du de ************************** du ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /* : Le */ IF de **** du de ********** du de ********** du de ********** du de ********** du de ********** du de ********** du de ********** du de ************************** du du procédé stocké dbo.csp_rmd_rpt EXISTE (CHOISIR * À PARTIR d'INFORMATION_SCHEMA.ROUTINES OÙ ROUTINE_SCHEMA = « dbo » ET ROUTINE_NAME = « @rpt_run_dt = busn_dt du datetime select de @rpt_run_dt du PROCÉDÉ dbo.csp_rmd_rpt
as
begin
declare du PROCÉDÉ dbo.csp_rmd_rpt GO
CREATE de BAISSE du ") de csp_rmd_rpt du be_busn_dt
Select be_prsn.prsn_id, le pers_id, le fst_nm, le mid_nm, le last_nm, le sfx_cd, le brth_dt, le deth_dt, le convert (décimale (5.2), (CASE QUAND DATEPART (d, le getdate ()) >= DATEPART (d, brth_dt) PUIS (DATEDIFF (m, brth_dt, getdate ()) /12.0) AUTREMENT ((DATEDIFF (m, brth_dt, getdate ()) - 1)/12.0) EXTRÉMITÉS)) vieillir, le (cas quand jour (dateadd (mois, ((70*12) +6), le brth_dt)) = 1 puis dateadd d'autre du de dateadd (mois, ((70*12) +6), brth_dt) (jour, d'une journée (dateadd (mois, ((70*12) +6), brth_dt)), dateadd (mois, 1, dateadd (mois, ((70*12) +6), brth_dt)))be_prsn, be_empt_hist, be_mbr_acct, acct_stat_vw, be_mbr Where be_prsn.prsn_id = be_mbr.prsn_id et be_empt_hist.mbr_id = be_mbr_acct.mbr_id du From du #tmp_initial_RMD_candidates de RMD_dt into de fin du ) et be_empt_hist.mbr_id = be_mbr.mbr_id et be_mbr_acct.acct_id = acct_stat_vw.acct_id et be_mbr_acct.mbr_id = be_mbr.mbr_id et be_empt_hist.end_dt dans (a.max_end_dt de (mbr_id choisi, max_end_dt maximum (d'end_dt) de de be_empt_hist où mbr_id = groupe de be_mbr.mbr_id par le mbr_id) l'a où a.max_end_dt ! = « 2999-12-31 ») le et le pers_id N'EST PAS NULL et <> 3 et DATEDIFF (MOIS, brth_dt, CONVERTI (DATE-HEURE de pln_id, '04.15. '+ MOULÉ (CAS QUAND MOIS (getdate ()) > 4 PUIS ANNÉES (getdate ()) + 1 ANNÉE D'AUTRE (getdate ()) EXTRÉMITÉ COMME varchar)) ) > 846 et acct_stat_vw.eff_dt = (le CHOISISSENT le de max (x.eff_dt) À PARTIR de l'acct_stat_vw COMME x dans OÙ x.acct_id = acct_stat_vw.acct_id ET x.acct_id = be_mbr_acct.acct_id et x.acct_stat_cd (") de « ACTE », de « ATTENTE », « de DTH et converti (char (10), x.eff_dt, 111) + streptocoque (x.acct_id) = ( maximum (converti streptocoque (de char (10), x2.eff_dt, 111) + (x2.acct_id)) du where de l'acct_stat_vw x2 du et acct_stat_vw.acct_stat_cd du de x2.acct_id = d'acct_stat_vw.acct_id et de x2.acct_id = de be_mbr_acct.acct_id )) dans (le « ACTE », « ATTENDENT », « DTH ") le group par be_prsn.prsn_id, pers_id du , ss_nr du , fst_nm du , mid_nm du , last_nm du , sfx_cd du , brth_dt du , deth_dt du , (CAS QUAND DATEPART (d, getdate ()) >= DATEPART (d, brth_dt) PUIS (DATEDIFF (m, brth_dt, getdate ()) /12.0) AUTREMENT ((DATEDIFF (m, brth_dt, getdate ()) - 1)/12.0) EXTRÉMITÉS) --enlever ceci à partir du dossier final car l'âge ne sera pas montré dans le file. , (cas quand jour (dateadd (mois, ((70*12) +6), le brth_dt)) puis dateadd d'autre du du du dateadd =1 (mois, ((70*12) +6), brth_dt) (jour, d'une journée (dateadd (mois, ((70*12) +6), brth_dt)), dateadd (mois, 1, dateadd (mois, ((70*12) +6), brth_dt)))
d'extrémité du )--obtenir le initial_rmd_accts.pers_id de l'acct_bal select, le initial_rmd_accts.deth_dt du , le sum ( vw.rglr_int_item_amt+ vw.var_int_item_amt + vw.unit_int_item_amt de vw.post_tax_cntrb + vw.empr_pre_tax_cntrb + vw.var_empr_pre_tax_cntrb_amt + vw.var_post_tax_cntrb_amt + vw.var_pre_tax_cntrb_amt+ vw.unt_cntrb_amt + vw.pre_tax_unt_cntrb_amt+ de vw.pre_tax_cntrb+) en tant qu'initial_rmd_accts #acct_bal du #tmp_initial_RMD_candidates du from du tot_acct_bal into, le VW de mam_acct_bal_vw, le be_prsn a, le be_mbr b, le where du be_mbr_acct c a.pers_id = initial_rmd_accts.pers_id et l'a.prsn_id = l'initial_rmd_accts.prsn_id et le de b.prsn_id = d'a.prsn_id et le de c.mbr_id = de b.mbr_id et le de vw.acct_id = de c.acct_id et le <> 3 group de c.pln_id par initial_rmd_accts.pers_id, pers_id du initial_rmd_accts.deth_dt
select tprmd.pers_id, deth_dt du acctbal.deth_dt, le acctbal.tot_acct_bal, tprmd.prsn_id, fst_nm du tprmd.fst_nm, mid_nm du tprmd.mid_nm, last_nm du tprmd.last_nm, sfx_cd du tprmd.sfx_cd, brth_dt du tprmd.brth_dt, le tprmd.RMD_dt RMD_dt, le case quand acctbal.tot_acct_bal = 0.0 et acctbal.deth_dt n'est pas nul puis « excluent » le quand (acctbal.tot_acct_bal = 0.0 et acctbal.deth_dt est nul) ou (acctbal.tot_acct_bal > 0.0 et acctbal.deth_dt est nul) ou (acctbal.tot_acct_bal > 0.0 et acctbal.deth_dt n'est pas nul) alors « inclure » l'extrémité en tant que tprmd de tp_rmd_rpt du from de #tmp_rmd_flag du into de RMD_flag joignent l'acctbal sur acctbal.pers_id = tprmd.pers_id
insert dans le prsn_id, le pers_id, le ss_nr, le fst_nm, le mid_nm, le last_nm du select de tp_rmd_rpt, le sfx_cd, le brth_dt, le deth_dt, le where RMD_flag de #tmp_rmd_flag du RMD_dt from = « incluent » --3486
RETURN END
class= de
|