Eu tenho um procedimento armazenado como segue. Minha pergunta é pode mim usa tabelas do #tmp_ (#tmp_initial_RMD_candidates) para introduzir dados intermediários e para carregar então os dados finais em uma tabela do “tp_” que seja usada para gerar um relatório? o If do ********* do do ********** do do ********** do do ********** do do ********** do do ********** do do ********** do do ************************** do EXISTE (SELECIONAR * DE INFORMATION_SCHEMA.TABLES ONDE TABLE_SCHEMA = “dbo” E TABLE_NAME = “tp_rmd_rpt ") o tp_rmd_rpt GO IF da TABELA da GOTA do EXISTE (nome SELETO do sysindexes ONDE nome = “ix01”) o ÍNDICE tp_rmd_rpt.ix01 GO da GOTA do --deixar cair a tabela dbo.tp_rmd_rpt do tp_rmd_rpt create da tabela (prsn_id int do , pers_id int do , ss_nr varchar (9), fst_nm varchar (20), mid_nm varchar (20), last_nm varchar (20), carvão animal do do do do do sfx_cd do (4), datetime do brth_dt do , datetime do deth_dt do , -- envelhecer o decimal (4.1), o índice ix01 do GO create do datetime do RMD_dt) no objeto do ****** do GO /do tp_rmd_rpt (pers_id): StoredProcedure [dbo]. data do certificado [do csp_rmd_rpt]: 06/02/2010 de 07:24: 22 objeto do * do **** do do ********** do do ********** do do ********** do do ********** do do ********** do do ********** do do ********** do do ************************** do ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /* : O */ IF do **** do do ********** do do ********** do do ********** do do ********** do do ********** do do ********** do do ********** do do ************************** do do procedimento armazenado dbo.csp_rmd_rpt EXISTE (SELECIONAR * de INFORMATION_SCHEMA.ROUTINES ONDE ROUTINE_SCHEMA = “dbo” E ROUTINE_NAME = do “@rpt_run_dt = busn_dt do datetime select do @rpt_run_dt do PROCEDIMENTO dbo.csp_rmd_rpt
as
begin
declare do PROCEDIMENTO dbo.csp_rmd_rpt GO
CREATE da GOTA do ") csp_rmd_rpt do be_busn_dt
Select be_prsn.prsn_id, pers_id, fst_nm, mid_nm, last_nm, sfx_cd, brth_dt, deth_dt, convert (decimal (5.2), (CASE QUANDO DATEPART (d, o getdate ()) >= DATEPART (d, brth_dt) ENTÃO (DATEDIFF (m, brth_dt, getdate ()) /12.0) MAIS ((DATEDIFF (m, brth_dt, getdate ()) - 1)/12.0) EXTREMIDADES)) envelhecer, (caso quando dia (dateadd (mês, ((70*12) +6), o brth_dt)) = 1 então dateadd (mês, ((70*12) +6), dateadd outro do do brth_dt) (dia, 1 - dia (dateadd (mês, ((70*12) +6), brth_dt)), dateadd (mês, 1, dateadd (mês, ((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 e be_empt_hist.mbr_id = be_mbr_acct.mbr_id do From do #tmp_initial_RMD_candidates de RMD_dt into do fim do ) e be_empt_hist.mbr_id = be_mbr.mbr_id e be_mbr_acct.acct_id = acct_stat_vw.acct_id e be_mbr_acct.mbr_id = be_mbr.mbr_id e be_empt_hist.end_dt (a.max_end_dt de (mbr_id seleto, max_end_dt máximo (do end_dt) do do be_empt_hist onde mbr_id = grupo de be_mbr.mbr_id pelo mbr_id) no a onde a.max_end_dt! = “2999-12-31”) o e o pers_id NÃO SÃO NULL e <> 3 e DATEDIFF do pln_id (MÊS, brth_dt, CONVERSO (DATETIME, '04.15. '+ MOLDADO (CASO QUANDO MÊS (getdate ()) > 4 ENTÃO ANOS (getdate ()) + 1 ANO OUTRO (getdate ()) EXTREMIDADE COMO varchar)) ) > 846 e acct_stat_vw.eff_dt = (o SELECIONA o do max (x.eff_dt) do acct_stat_vw COMO o x ONDE x.acct_id = acct_stat_vw.acct_id E x.acct_id = be_mbr_acct.acct_id e x.acct_stat_cd dentro (") do “ATO”, da “ESPERA”, do “DTH e converso (carvão animal (10), x.eff_dt, 111) + estreptococo (x.acct_id) = estreptococo do ( máximo (converso (carvão animal (10), x2.eff_dt, 111) + (x2.acct_id)) do where do acct_stat_vw x2 do e acct_stat_vw.acct_stat_cd do de x2.acct_id = de acct_stat_vw.acct_id e de x2.acct_id = de be_mbr_acct.acct_id )) (o “ATO”, “ESPERA”, “DTH ") no group por be_prsn.prsn_id, pers_id do , ss_nr do , fst_nm do , mid_nm do , last_nm do , sfx_cd do , brth_dt do , deth_dt do , (CASO QUANDO DATEPART (d, getdate ()) >= DATEPART (d, brth_dt) ENTÃO (DATEDIFF (m, brth_dt, getdate ()) /12.0) MAIS ((DATEDIFF (m, brth_dt, getdate ()) - 1)/12.0) EXTREMIDADES) --remover isto da lima final como a idade não será indicada no file. , (caso quando dia (dateadd (mês, ((70*12) +6), o brth_dt)) então dateadd =1 (mês, ((70*12) +6), dateadd outro do do do brth_dt) (dia, 1 - dia (dateadd (mês, ((70*12) +6), brth_dt)), dateadd (mês, 1, dateadd (mês, ((70*12) +6), brth_dt)))
da extremidade do )--começ o initial_rmd_accts.pers_id do acct_bal select, o initial_rmd_accts.deth_dt do , o sum ( vw.rglr_int_item_amt+ vw.var_int_item_amt + vw.unit_int_item_amt do 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+) como initial_rmd_accts #acct_bal do #tmp_initial_RMD_candidates do from do tot_acct_bal into, a VW do mam_acct_bal_vw, o be_prsn a, o be_mbr b, o where do be_mbr_acct c a.pers_id = initial_rmd_accts.pers_id e o a.prsn_id = o initial_rmd_accts.prsn_id e o de b.prsn_id = da.prsn_id e o de c.mbr_id = de b.mbr_id e o de vw.acct_id = de c.acct_id e o <> 3 group de c.pln_id por initial_rmd_accts.pers_id, pers_id do initial_rmd_accts.deth_dt
select tprmd.pers_id, deth_dt do acctbal.deth_dt, acctbal.tot_acct_bal, tprmd.prsn_id, fst_nm do tprmd.fst_nm, mid_nm do tprmd.mid_nm, last_nm do tprmd.last_nm, sfx_cd do tprmd.sfx_cd, brth_dt do tprmd.brth_dt, tprmd.RMD_dt RMD_dt, case quando acctbal.tot_acct_bal = 0.0 e acctbal.deth_dt não é nulo então “exclui” o quando (acctbal.tot_acct_bal = 0.0 e acctbal.deth_dt é nulo) ou (acctbal.tot_acct_bal > 0.0 e acctbal.deth_dt é nulo) ou (acctbal.tot_acct_bal > 0.0 e acctbal.deth_dt não é nulo) então “incluir” a extremidade como o tprmd do tp_rmd_rpt do from do #tmp_rmd_flag do into de RMD_flag junta-se ao acctbal em acctbal.pers_id = tprmd.pers_id
insert no prsn_id do select do tp_rmd_rpt, pers_id, ss_nr, fst_nm, mid_nm, last_nm, o sfx_cd, brth_dt, deth_dt, where RMD_flag do #tmp_rmd_flag do RMD_dt from = “inclui” --3486
RETURN END
class= do
|