Я имею, котор хранят процедуру следующим образом. Мое вопрос в том, что может я использует таблицы #tmp_ (ex #tmp_initial_RMD_candidates) для того чтобы ввести промежуточные данные и после этого нагрузить окончательные данные в таблице «tp_» будет использована для того чтобы произвести рапорт? If ********* ********** ********** ********** ********** ********** ********** ************************** СУЩЕСТВУЕТ (ВЫБЕРИТЕ * ОТ INFORMATION_SCHEMA.TABLES ГДЕ TABLE_SCHEMA = «dbo» И TABLE_NAME = «tp_rmd_rpt ") tp_rmd_rpt GO IF ТАБЛИЦЫ ПАДЕНИЯ СУЩЕСТВУЕТ (ОТБОРНОЕ имя ОТ sysindexes ГДЕ имя = «ix01») ИНДЕКС tp_rmd_rpt.ix01 GO ПАДЕНИЯ --упадите таблица dbo.tp_rmd_rpt tp_rmd_rpt create таблицы (prsn_id int , pers_id int , ss_nr varchar (9), fst_nm varchar (20), mid_nm varchar (20), last_nm varchar (20), чарс sfx_cd (4), datetime brth_dt , datetime deth_dt , -- постарейте десятичная дробь (4.1), индекс ix01 GO create datetime RMD_dt) на предмете ****** GO /tp_rmd_rpt (pers_id): StoredProcedure [dbo]. дата сценария [csp_rmd_rpt]: 06/02/2010 07:24: 22 предмет * **** ********** ********** ********** ********** ********** ********** ********** ************************** ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /* : */ IF **** ********** ********** ********** ********** ********** ********** ********** ************************** хранят процедуры dbo.csp_rmd_rpt СУЩЕСТВУЕТ (ВЫБЕРИТЕ * ОТ INFORMATION_SCHEMA.ROUTINES ГДЕ ROUTINE_SCHEMA = «dbo» И ROUTINE_NAME = «@rpt_run_dt = busn_dt datetime select @rpt_run_dt ПРОЦЕДУРЕ ПО dbo.csp_rmd_rpt
as
begin
declare ПРОЦЕДУРЕ ПО dbo.csp_rmd_rpt GO
CREATE ПАДЕНИЯ ") csp_rmd_rpt от be_busn_dt
Select be_prsn.prsn_id, pers_id, fst_nm, mid_nm, last_nm, sfx_cd, brth_dt, deth_dt, convert (десятичной дроби (5.2), (CASE КОГДА DATEPART (d, getdate ()) >= DATEPART (d, brth_dt) ПОСЛЕ ЭТОГО (DATEDIFF (m, brth_dt, getdate ()) /12.0) ЕЩЕ ((DATEDIFF (m, brth_dt, getdate ()) - 1)/12.0) КОНЦОВ)) постарейте, (случай когда день (dateadd (месяц, ((70*12) +6), brth_dt)) = 1 после этого dateadd dateadd (месяца, ((70*12) +6), brth_dt) другое (день, 1ый-суточн (dateadd (месяц, ((70*12) +6), brth_dt)), dateadd (месяц, 1, dateadd (месяц, ((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 и be_empt_hist.mbr_id = be_mbr_acct.mbr_id From #tmp_initial_RMD_candidates RMD_dt into конца ) и be_empt_hist.mbr_id = be_mbr.mbr_id и be_mbr_acct.acct_id = acct_stat_vw.acct_id и be_mbr_acct.mbr_id = be_mbr.mbr_id и be_empt_hist.end_dt в (отборное a.max_end_dt от (отборное mbr_id, максимальное max_end_dt (end_dt) от be_empt_hist где mbr_id = группа be_mbr.mbr_id mbr_id) a где a.max_end_dt! = «2999-12-31») и pers_id НЕ БУДУТ NULL и <> 3 и DATEDIFF pln_id (МЕСЯЦЕМ, brth_dt, НОВООБРАЩЕННЫМ (DATETIME, '04.15. '+ после того как я БРОШЕНО (СЛУЧАЙ КОГДА МЕСЯЦ (getdate ()) > 4 ПОСЛЕ ЭТОГО ГОДА (getdate ()) + 1 ДРУГОЙ ГОД (getdate ()) КОНЕЦ КАК varchar)) ) > 846 и acct_stat_vw.eff_dt = ( ВЫБИРАЕТ МАКСИМАЛЬНОЕ ОТ acct_stat_vw КАК x ГДЕ x.acct_id = acct_stat_vw.acct_id И x.acct_id = be_mbr_acct.acct_id и x.acct_stat_cd в (") «ПОСТУПКА», «ОЖИДАНИЯ», «DTH и новообращенный (чарс (10), x.eff_dt, 111) + str (x.acct_id) = (отборное максимальное (новообращенный (str чарса (10), x2.eff_dt, 111) + (x2.acct_id)) от where acct_stat_vw x2 и acct_stat_vw.acct_stat_cd x2.acct_id = acct_stat_vw.acct_id и x2.acct_id = be_mbr_acct.acct_id )) в («ПОСТУПОК», «ЖДЕТ», «DTH ") group be_prsn.prsn_id, pers_id , ss_nr , fst_nm , mid_nm , last_nm , sfx_cd , brth_dt , deth_dt , (СЛУЧАЕМ КОГДА DATEPART (d, getdate ()) >= DATEPART (d, brth_dt) ПОСЛЕ ЭТОГО (DATEDIFF (m, brth_dt, getdate ()) /12.0) ЕЩЕ ((DATEDIFF (m, brth_dt, getdate ()) - 1)/12.0) КОНЦОВ) --извлекайте это от окончательного архива по мере того как время не будет показано в окончательном file. , (случай когда день (dateadd (месяц, ((70*12) +6), brth_dt)) после этого dateadd dateadd =1 (месяц, ((70*12) +6), brth_dt) другое (день, 1ый-суточн (dateadd (месяц, ((70*12) +6), brth_dt)), dateadd (месяц, 1, dateadd (месяц, ((70*12) +6), brth_dt)))
конца )--получите initial_rmd_accts.pers_id acct_bal select, initial_rmd_accts.deth_dt , sum ( vw.rglr_int_item_amt+ vw.var_int_item_amt + vw.unit_int_item_amt 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.pre_tax_cntrb+) как initial_rmd_accts #tmp_initial_RMD_candidates from tot_acct_bal into #acct_bal, vw mam_acct_bal_vw, be_prsn a, be_mbr b, where c be_mbr_acct a.pers_id = initial_rmd_accts.pers_id и a.prsn_id = initial_rmd_accts.prsn_id и b.prsn_id = a.prsn_id и c.mbr_id = b.mbr_id и vw.acct_id = c.acct_id и <> 3 group c.pln_id initial_rmd_accts.pers_id, pers_id initial_rmd_accts.deth_dt
select tprmd.pers_id, deth_dt acctbal.deth_dt, acctbal.tot_acct_bal, tprmd.prsn_id, fst_nm tprmd.fst_nm, mid_nm tprmd.mid_nm, last_nm tprmd.last_nm, sfx_cd tprmd.sfx_cd, brth_dt tprmd.brth_dt, tprmd.RMD_dt RMD_dt, case когда acctbal.tot_acct_bal = 0.0 и acctbal.deth_dt не нулево после этого «исключает» когда (acctbal.tot_acct_bal = 0.0 и acctbal.deth_dt нулево) или (acctbal.tot_acct_bal > 0.0 и acctbal.deth_dt нулево) или (acctbal.tot_acct_bal > 0.0 и acctbal.deth_dt не нулево) после этого «включите» конец как tprmd tp_rmd_rpt from #tmp_rmd_flag into RMD_flag соединяет #acct_bal acctbal на acctbal.pers_id = tprmd.pers_id
insert в prsn_id select tp_rmd_rpt, pers_id, ss_nr, fst_nm, mid_nm, last_nm, sfx_cd, brth_dt, deth_dt, where RMD_flag #tmp_rmd_flag RMD_dt from = «вклюает» --3486
RETURN END
class=
|