Ich habe ein gespeichertes Verfahren wie folgt. Meine Frage ist kann ich benutzen #tmp_ Tabellen (ex #tmp_initial_RMD_candidates) um Zwischendaten einzusetzen und die abschließenden Daten in einer „tp_“ Tabelle dann zu laden, die benutzt, um einen Report zu erzeugen? ************************** ********** ********** ********** ********** ********** ********** ********* If EXISTIERT (* VON INFORMATION_SCHEMA.TABLES VORWÄHLEN IN DEM TABLE_SCHEMA = „dbo“ UND TABLE_NAME = „tp_rmd_rpt "), TROPFEN-TABELLE tp_rmd_rpt GO IF EXISTIERT (AUSERWÄHLTER Name vom sysindexes WO Name = „ix01“) TROPFEN-INDEX tp_rmd_rpt.ix01 GO --Tabelle tp_rmd_rpt create Tabelle dbo.tp_rmd_rpt ( prsn_id int, pers_id int, das ss_nr fallenlassen varchar (9), das fst_nm varchar (20), das mid_nm varchar (20), das last_nm varchar (20), sfx_cd Putzfrau (4), brth_dt Datum/Uhrzeit, deth_dt Datum/Uhrzeit, -- Dezimalstrich (4.1), RMD_dt datetime ) GO create Index ix01 auf tp_rmd_rpt (pers_id) GO /****** Gegenstand altern: StoredProcedure [dbo]. [csp_rmd_rpt] Index-Datum: 06/02/2010 07:24: 22 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /* ************************** ********** ********** ********** ********** ********** ********** ********** **** * Gegenstand: Gespeichertes Verfahren dbo.csp_rmd_rpt ************************** ********** ********** ********** ********** ********** ********** ********** **** */ IF EXISTIERT (* VON INFORMATION_SCHEMA.ROUTINES VORWÄHLEN, WO ROUTINE_SCHEMA = „dbo“ UND ROUTINE_NAME = „csp_rmd_rpt ") VERFAHREN dbo.csp_rmd_rpt
as
begin
declare @rpt_run_dt datetime select DES TROPFEN-VERFAHRENS-dbo.csp_rmd_rpt GO
CREATE @rpt_run_dt = busn_dt vom be_busn_dt
Select be_prsn.prsn_id, pers_id, fst_nm, mid_nm, last_nm, sfx_cd, brth_dt, deth_dt, convert (Dezimalstrich (5.2), (CASE, WENN DATEPART (d, getdate ()) >= DATEPART (d, brth_dt) DANN (DATEDIFF (m, brth_dt, getdate ()) /12.0) SONST ((DATEDIFF (m, brth_dt, getdate ()) - 1)/12.0) ENDE)) altern, (Fall, wenn Tag (dateadd (Monat, ((70*12) +6), brth_dt)) = 1 dann dateadd (Monat, ((70*12) +6), brth_dt) sonst dateadd (Tag, 1-tägig (dateadd (Monat, ((70*12) +6), brth_dt)), dateadd (Monat, 1, dateadd (Monat, ((70*12) +6), brth_dt))) Ende) RMD_dt into #tmp_initial_RMD_candidates From be_prsn, be_empt_hist, be_mbr_acct, acct_stat_vw, be_mbr Where be_prsn.prsn_id = be_mbr.prsn_id und be_empt_hist.mbr_id = be_mbr_acct.mbr_id und be_empt_hist.mbr_id = be_mbr.mbr_id und be_mbr_acct.acct_id = acct_stat_vw.acct_id und be_mbr_acct.mbr_id = be_mbr.mbr_id und be_empt_hist.end_dt (auserwähltes a.max_end_dt von (auserwähltes mbr_id, maximales (end_dt) max_end_dt vom be_empt_hist wo mbr_id = be_mbr.mbr_id Gruppe durch mbr_id) im a wo a.max_end_dt! = „2999-12-31“) und pers_id IST NICHT NULL und pln_id <> 3 und DATEDIFF (MONAT, brth_dt, BEKEHRTER (DATUM/UHRZEIT, '04.15. '+ GEWORFEN (FALL, WENN MONAT (getdate ()) > 4 DANN JAHR (getdate ()) + 1 SONST JAHR (getdate ()) ENDE, WIE varchar)) ) > 846 und acct_stat_vw.eff_dt = ( VORWÄHLEN max (x.eff_dt) vom acct_stat_vw ALS x br, DEM x.acct_id = acct_stat_vw.acct_id UND x.acct_id = be_mbr_acct.acct_id und x.acct_stat_cd („TAT“, „WARTEZEIT“, „DTH ") und Bekehrter (Putzfrau (10), x.eff_dt, 111) + str (x.acct_id) = (das auserwählte maximal (Bekehrter, str (der Putzfrau (10), x2.eff_dt, 111) + (x2.acct_id)) acct_stat_vw x2 vom where x2.acct_id = acct_stat_vw.acct_id und x2.acct_id = be_mbr_acct.acct_id ) ) und acct_stat_vw.acct_stat_cd („TAT“, „WARTEN“, „DTH "), im group durch be_prsn.prsn_id, pers_id, ss_nr, fst_nm, mid_nm, last_nm, sfx_cd, brth_dt, deth_dt, (FALL, WENN DATEPART (d, getdate ()) >= DATEPART (d, brth_dt) DANN (DATEDIFF (m, brth_dt, getdate ()) /12.0) SONST ((DATEDIFF (m, brth_dt, getdate ()) - 1)/12.0) ENDE) --dieses von der abschließenden Akte entfernen, da das Alter nicht im abschließenden file. angezeigt, (Fall, wenn Tag (dateadd (Monat, ((70*12) +6), brth_dt)) dann dateadd =1 (Monat, ((70*12) +6), brth_dt) sonst dateadd (Tag, 1-tägig (dateadd (Monat, ((70*12) +6), brth_dt)), dateadd (Monat, 1, dateadd (Monat, ((70*12) +6), brth_dt))) Ende)
--acct_bal select initial_rmd_accts.pers_id, initial_rmd_accts.deth_dt, sum (vw.pre_tax_cntrb+ 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+ vw.rglr_int_item_amt+ vw.var_int_item_amt + vw.unit_int_item_amt) als tot_acct_bal into #acct_bal from #tmp_initial_RMD_candidates initial_rmd_accts, mam_acct_bal_vw VW, be_prsn a, be_mbr b, be_mbr_acct c where a.pers_id = initial_rmd_accts.pers_id und a.prsn_id = initial_rmd_accts.prsn_id und b.prsn_id = a.prsn_id und c.mbr_id = b.mbr_id und vw.acct_id = c.acct_id und c.pln_id <> 3 group erhalten durch initial_rmd_accts.pers_id, initial_rmd_accts.deth_dt
select tprmd.pers_id pers_id, acctbal.deth_dt deth_dt, acctbal.tot_acct_bal, tprmd.prsn_id prsn_id, tprmd.fst_nm fst_nm, tprmd.mid_nm mid_nm, tprmd.last_nm last_nm, tprmd.sfx_cd sfx_cd, tprmd.brth_dt brth_dt, tprmd.RMD_dt RMD_dt, case, wenn acctbal.tot_acct_bal = 0.0 und acctbal.deth_dt nicht dann „ungültig ist, ausschließen“ br, wenn (acctbal.tot_acct_bal = 0.0 und acctbal.deth_dt ist ungültig), oder (acctbal.tot_acct_bal > 0.0 und acctbal.deth_dt ist ungültig), oder (acctbal.tot_acct_bal > 0.0 und acctbal.deth_dt ist nicht ungültig), Ende als RMD_flag into #tmp_rmd_flag from tp_rmd_rpt tprmd „dann einschließen“, anschließen #acct_bal acctbal auf acctbal.pers_id = tprmd.pers_id
insert in tp_rmd_rpt select prsn_id, pers_id, ss_nr, fst_nm, mid_nm, last_nm, „umfassen“ sfx_cd, brth_dt, deth_dt, RMD_dt from #tmp_rmd_flag where RMD_flag = --3486
RETURN END
|