IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Problème Procédure stockée et passage de paramètre


Sujet :

Développement SQL Server

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème Procédure stockée et passage de paramètre
    Bonjour à tous,

    J'ai un souci qui m'embête depuis quelques temps sur une procédure stockée. Je vais essayer de résumer le plus clairement possible mon souci.

    Je dispose d'une procédure stockée sous SQL-Server qui me renvoie un certain nombre de données liées à une interface comptable.
    À l'intérieur de cette procédure, je sélectionne un champ en utilisant un simple "case/when ", sauf que derrière, je ne suis pas en mesure d'utiliser le résultat.
    Je vais essayer d'illustrer plus clairement ma demande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CASE 
    	WHEN gl_entry.gl_entry_type LIKE 'accrue%' 
    THEN (select max(gl.action_dt) from gl_entry gl,cflows cf where ( gl.deal_no=cf.deal_no and gl.action_dt=cf.cflow_dt and gl.deal_leg = gl_entry.deal_leg and gl.deal_no=gl_entry.deal_no and gl.action_dt < gl_entry.action_dt))
    	ELSE (select max(cflow_dt) from cflows cf where (cf.deal_no=cflows.deal_no and cf.flag=cflows.flag and cf.cflow_dt<cflows.cflow_dt))
    		END int_prev_dt,
    Ceci me permet de renvoyer mon champ int_prev_dt dont j'ai besoin.
    Le souci est que je n'ai pas la possibilité de l'utiliser dans une fonction du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (select dbo.qsp_laf_fxrate(glsaprpt.ccy, int_prev_dt ,'FIXING')) AS fxmult_ccy_int_prev_dt,
    Est-ce que vous connaissez un moyen de faire passer en paramètre de fonction, au sein de la même requête, un champ calculé ?

    Je vous remercie par avance pour votre réponse, et si je n'ai pas été clair ou avez besoin d'un complément de précision ou d'information, n'hésitez pas !

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 917
    Points : 51 693
    Points
    51 693
    Billets dans le blog
    6
    Par défaut
    Encapsulez cela dans une sous requête sous forme de table dérivée ou bien dans une CTE.

    Pour plus d'aide, postez votre requête ENTIÈRE ainsi qu'un exemple de résultat attendu.

    A +

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Voici la requête entière!! Je vous ai mis en gras, pour plus de clarté, le calcul du champ à passer en paramètre ainsi que son utilisation dans des fonctions en bas. Pour le moment j'ai trouvé une parade en calculant le champ directement dans la fonction, mais je ne trouve pas cela très clean.

    Merci d'avance en tout cas pour votre première réponse et pour la suivante peut être.

    A+

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    ALTER PROCEDURE [dbo].[lafsp_jde_trans]
    AS
    BEGIN
    	SET NOCOUNT ON;
    
    	-- Drop temporary tables if already existing:
    	IF OBJECT_ID('tempdb..#temp') IS NOT NULL DROP TABLE #temp;
    	IF OBJECT_ID('tempdb..#lafsp_jde_base') IS NOT NULL DROP TABLE #lafsp_jde_base;
    	IF OBJECT_ID('tempdb..#flowtable') IS NOT NULL DROP TABLE #flowtable;
    	IF OBJECT_ID('tempdb..#basetable') IS NOT NULL DROP TABLE #basetable;
    	
    /* TEMPORARY TABLE 1 - BASETABLE */
    SELECT  DISTINCT
    	cf.deal_no, 
    	cf.flow_no, 
    	cf.cflow_dt, 
    	cf.comments, 
    	cf.flag,
    	cf.nett_no,
    	gl.amount, 
    	gl.gl_entry_type
    INTO #basetable
    FROM  
    	cflows AS cf INNER JOIN gl_entry AS gl ON
    	cf.deal_no = gl.deal_no AND cf.cflow_dt = gl.action_dt AND cf.cflow_no = gl.cflow_id
     -- CRITERIA CURRENTLY USED FOR THE INTERFACE :
    WHERE
    	(gl.gl_entry_type LIKE 'face%' OR
    	gl.gl_entry_type LIKE 'bankacc%' OR
    	gl.gl_entry_type LIKE 'a_wtax%' OR
    	gl.gl_entry_type LIKE 'a_int%' OR
    	gl.gl_entry_type LIKE 'bs_pay_exp' OR
    	gl.gl_entry_type LIKE 'bs_rec_exp' OR
    	gl.comment_type='10740057' )  -- UNWIND PRINCIPAL
    	AND (cf.trans_type IN ('SE', 'SC', 'SI'))
    
    /* TEMPORARY TABLE 1 *CONTINUED* - BASETABLE */
    INSERT INTO #basetable 
    SELECT DISTINCT 
    	gl.deal_no, 
    	MIN(bt.flow_no) AS flow_no, 
    	gl.action_dt AS cflow_dt, 
    	bt.comments,
    	gl.deal_leg AS flag,
    	null AS nett_no,
    	gl.amount, 
    	gl.gl_entry_type
    FROM         
    	gl_entry AS gl 
    	INNER JOIN #basetable AS bt ON gl.deal_no = bt.deal_no AND gl.action_dt < bt.cflow_dt 
    WHERE    
    	(bt.comments = 'INTEREST' AND gl.gl_entry_type LIKE 'accrue INTR%') 
    	OR  (bt.comments = 'COUPON' AND gl.gl_entry_type LIKE 'accrue%')
    GROUP BY gl.deal_no, gl.action_dt, bt.comments, gl.amount, gl.gl_entry_type, gl.deal_leg
    
    /* TEMPORARY TABLE 2 - FLOWTABLE */
    SELECT bt.deal_no, bt.flow_no, bt.cflow_dt, bt.comments, bt.flag, bt.nett_no, bt.amount, bt.gl_entry_type,
    	(SELECT MIN(v2.flow_no) FROM #basetable v2 WHERE bt.deal_no = v2.deal_no AND ((bt.flag is null AND v2.flag is null) OR bt.flag=v2.flag)) AS first_flow_no,
    	(SELECT MAX(v2.flow_no) FROM #basetable v2 WHERE bt.deal_no = v2.deal_no AND ((bt.flag is null AND v2.flag is null) OR bt.flag=v2.flag)) AS last_flow_no,
    	CASE 
    		WHEN bt.gl_entry_type LIKE 'a_wtax%'
    			THEN (SELECT MAX(v2.flow_no) FROM #basetable v2 WHERE bt.deal_no = v2.deal_no AND bt.flow_no>v2.flow_no AND bt.cflow_dt>v2.cflow_dt AND not v2.gl_entry_type LIKE 'a_wtax%' AND (bt.flag is null OR bt.flag=v2.flag))
    		ELSE
    			(SELECT MAX(v2.flow_no) FROM #basetable v2 WHERE bt.deal_no = v2.deal_no AND bt.flow_no>v2.flow_no AND not v2.gl_entry_type LIKE 'a_wtax%' AND (bt.flag is null OR bt.flag=v2.flag))
    	END prev_flow_no
    INTO #flowtable
    FROM #basetable bt
    
    /* TEMPORARY TABLE 3 -  RESULT TABLE */
    SELECT ft.*, 
    	(SELECT MAX(bt.cflow_dt) FROM #basetable bt WHERE ft.deal_no=bt.deal_no AND ((ft.flag is null AND bt.flag is null) or ft.flag=bt.flag) AND ft.prev_flow_no=bt.flow_no) AS prev_flow_dt
    	--(SELECT MAX(bt.cflow_dt) FROM #basetable bt WHERE ft.deal_no=bt.deal_no AND ft.prev_flow_no=bt.flow_no ) AS interest_prev_flow_dt
    INTO #lafsp_jde_base
    FROM #flowtable ft
    --ORDER BY 1,2
    
    /* ======================= */
    
    SELECT DISTINCT 
    	ac_cp02.name AS cparty_analyse_code_jde, 
    	ac_st02.name AS instrument_analyse_code_jde,
    	-- cflow delivery account's bank ana02
    	CASE 
    		WHEN (deals.trans_type='AT' and deals.in_use='N') THEN (
    			select max(ana_inner.name) 
    			from cflowsi cfi_inner 
    			left outer join bankacc ba_inner on cfi_inner.bank_acc=ba_inner.acc_no
    			left outer join cparty cp_inner on ba_inner.cparty=cp_inner.thekey
    			left outer join anacode ana_inner on cp_inner.analyse02=ana_inner.thekey
    			where gl_entry.cflow_id=cfi_inner.cflow_no and cfi_inner.cflow_no=gl_entry.cflow_id and cfi_inner.out_dt>getdate()
    			)
    		WHEN cflows.bank_acc IS NULL THEN NULL -- cflow bank account's bank ana02
    		ELSE (SELECT ac.name FROM anacode ac WHERE bankacc_cparty.analyse02=ac.thekey)
    		END ac_bankacc_cp02,
    	CASE 
    		WHEN cflows.vostro_acc IS NULL THEN NULL
    		ELSE (SELECT ac.name FROM anacode ac INNER JOIN cparty cp ON ac.thekey=cp.analyse02 INNER JOIN cpdelacc ssi ON ssi.cparty=cp.thekey WHERE cflows.vostro_acc=ssi.thekey)
    		END ac_cpdelacc_cp02,
    	acrl_item_post.acrl_item_id AS acrl_item_acrl_item_id, 
    	acrl_item_post.posting_date AS acrl_item_posting_date,
    	bankacc_cparty.code AS cflow_bank_code,
    	bankacc_cparty.name AS cflow_bank_name,
    	bustruct.name AS entity_name, 
    	bustruct.thekey AS entity_thekey, 
    	CASE 
    		WHEN deals.trans_type not in ('AC','AT') THEN NULL
    		ELSE (SELECT bust.name FROM bustruct bust WHERE (bust.bustruct_id=gl_entry.gl_owner_id and glsaprpt.trans_no = gl_entry.gl_entry_id))
    		END entity_ac_at,
    	cflows.comments AS cflow_comments, 
    	CASE 
    		WHEN cflows.match_det IS NULL THEN NULL
    		ELSE (SELECT MAX (cf.deal_no) FROM cflows cf WHERE cf.match_det=cflows.match_det and cf.deal_no<>cflows.deal_no and cf.bank_acc=cflows.bank_acc)
    		END cflow_matched_deal_no,
    	CASE 
    		WHEN gl_entry.gl_entry_type LIKE 'accrue%' 
    		THEN (select max(gl.action_dt) from gl_entry gl,cflows cf where ( gl.deal_no=cf.deal_no and gl.action_dt=cf.cflow_dt and gl.deal_leg = gl_entry.deal_leg and gl.deal_no=gl_entry.deal_no and gl.action_dt < gl_entry.action_dt))
    		ELSE (select max(cflow_dt) from cflows cf where (cf.deal_no=cflows.deal_no and (cf.flag=cflows.flag or (cf.flag is null and cflows.flag is null)) and cf.cflow_dt<cflows.cflow_dt))
    		END int_prev_dt,
    	cflows.flow_no AS cflow_flow_no,
    	chart_acc.account_type AS coa_account_type,
    	chart_acc.coa_code AS coa_coa_code, 
    	chart_acc.used_by_ba AS coa_used_by_ba, 
    	cparty.code AS cparty_code, 
    	cpdelacc_cparty.name AS cpdelacc_bank_name,
    	cptype.name AS cptype_name, 
    	deals.act_mat_dt AS deal_act_mat_dt,
    	deals.ccy AS deal_ccy, 
    	deals.ccy2 AS deal_ccy2, 
    	deals.cur_mat_dt AS deal_cur_mat_dt, 
    	deals.deal_dt AS deal_deal_dt, 
    	deals.deal_no AS deal_deal_no, 
    	deals.eff_mat_dt AS deal_eff_mat_dt,
    	deals.external_ref_id AS deal_external_ref_id,
    	deals.in_use AS deal_in_use,
    	deals.mature_dt AS deal_mature_dt, 
    	deals.settle_dt AS deal_settle_dt, 
    	deals.ticket_no AS deal_ticket_no,
    	deals.trans_type AS deal_trans_type, 
    	fxdeals.domccy AS fxdeal_domccy, 
    	fxdeals.spot_rate AS fxdeal_spot_rate, 
    	fxdeals.swap_side AS fxdeal_swap_side,
    	fxdeals.contr_rate AS fxdeal_contr_rate,
    	CASE 
    		WHEN fxdeals.swap_link>0 THEN (select dd.mature_dt from fxdeals fx INNER JOIN deals dd ON fx.deal_no = dd.deal_no where  (fx.deal_no<>fx.swap_link)and fxdeals.deal_no=fx.swap_link)
    		ELSE NULL
    	END fxdeals_other_mature_dt,
    	CASE 
    		WHEN deals.trans_type='AC' THEN (SELECT acd.fx_rate FROM acdeals acd WHERE acd.deal_no=deals.deal_no)
    		ELSE NULL
    		END acdeal_fx_rate,
    	gl_entry.comment_type AS gl_comment_type,
    	gl_entry.exch_group AS gl_exch_group,
    	gl_entry.exch_type AS gl_exch_type,
    	gl_entry.gl_entry_type AS gl_gl_entry_type,
    	gl_entry.gl_owner_id AS gl_gl_owner_id,
    	gl_entry.reversal_status AS gl_reversal_status, 
    	gl_entry.trans_type AS gl_trans_type, 
    	glsaprpt.amount AS interface_amount, 
    	glsaprpt.base_amt AS interface_base_amt, 
    	glsaprpt.base_ccy AS interface_base_ccy,
    	glsaprpt.base_rate AS interface_base_rate,
    	glsaprpt.ccy AS interface_ccy, 
    	glsaprpt.deal_no AS interface_deal_no, 
    	glsaprpt.gl_entry_type AS interface_gl_entry_type, 
    	glsaprpt.output_coa_code AS interface_output_coa_code, 
    	glsaprpt.ext_accprd AS interface_ext_accprd,
    	glsaprpt.source_cde AS interface_source_cde,
    	glsaprpt.narrative AS interface_narrative,
    	glsaprpt.ref1 AS interface_ref1,  
    	glsaprpt.ref2 AS interface_ref2, 
    	glsaprpt.allocation AS interface_allocation,
    	glsaprpt.busarea AS interface_busarea,
    	glsaprpt.compcode AS interface_compcode,
    	glsaprpt.rptno AS interface_rptno, 
    	glsaprpt.trans_dt AS interface_transaction_date, 
    	glsaprpt.trans_no AS interface_transaction_no, 
    	sectype.code AS instrument_code, 
    	sectype.formula AS instrument_formula,
    	sectype.name AS instrument_name, 
    	swdeals.exch_rate AS swdeal_exch_rate, 
    	--interface_basetable.nett_no AS cflow_nett_no, 
    	cflows.nett_no AS cflow_nett_no, 
    --	CASE WHEN interface_basetable.nett_no IS NULL THEN NULL
    --		ELSE (SELECT SUM(cflows.amount) FROM cflows WHERE cflows.nett_no=interface_basetable.nett_no)
    --		END cflow_total_nett_amount,
    	CASE 
    		WHEN cflows.nett_no IS NULL THEN NULL
    		ELSE (SELECT SUM(cfl.amount) FROM cflows cfl WHERE cfl.nett_no=cflows.nett_no)
    		END cflow_total_nett_amount,
    	interface_basetable.first_flow_no AS deal_schedule_first_flow_no, 
    	interface_basetable.flow_no AS deal_schedule_flow_no, 
    	interface_basetable.prev_flow_no AS deal_schedule_previous_flow_no,
    	interface_basetable.prev_flow_dt AS deal_schedule_previous_flow_dt,
    	--interface_basetable.interest_prev_flow_dt AS deal_schedule_previous_int_flow_dt,	
    	(select dbo.qsp_laf_latestAI(cflows.deal_no,cflows.trans_type)) AS AI_count,
    	(select dbo.qsp_laf_fxrate(glsaprpt.ccy,deals.deal_dt,'FIXING')) AS fxmult_ccy_dealdt,
    	(select dbo.qsp_laf_fxrate(fxdeals.domccy,deals.deal_dt,'FIXING')) AS fxmult_domccy_dealdt,
    	(select dbo.qsp_laf_fxrate(glsaprpt.ccy,deals.settle_dt,'FIXING')) AS fxmult_ccy_settledt,
    	(select dbo.qsp_laf_fxrate(fxdeals.domccy,deals.settle_dt,'FIXING')) AS fxmult_domccy_settledt,
    	(select dbo.qsp_laf_fxrate(glsaprpt.ccy,glsaprpt.trans_dt,'FIXING')) AS fxmult_ccy_transdt,
    	(select dbo.qsp_laf_fxrate(fxdeals.domccy,glsaprpt.trans_dt,'FIXING')) AS fxmult_domccy_transdt,
    	(select dbo.qsp_laf_fxrate(glsaprpt.ccy,interface_basetable.prev_flow_dt,'FIXING')) AS fxmult_ccy_prevflowdt,
    	(select dbo.qsp_laf_fxrate(fxdeals.domccy,interface_basetable.prev_flow_dt,'FIXING')) AS fxmult_domccy_prevflowdt,
    	--(select dbo.qsp_laf_fxrate(glsaprpt.ccy,interface_basetable.interest_prev_flow_dt,'FIXING')) AS fxmult_ccy_int_prevflowdt,
    	--(select dbo.qsp_laf_fxrate(fxdeals.domccy,interface_basetable.interest_prev_flow_dt,'FIXING')) AS fxmult_domccy_int_prevflowdt,
    
    	(select dbo.qsp_laf_fxrate(glsaprpt.ccy,
    		(select max(gl.action_dt) from gl_entry gl,cflows cf where ( gl.deal_no=cf.deal_no and gl.action_dt=cf.cflow_dt and gl.deal_leg = gl_entry.deal_leg and gl.deal_no=gl_entry.deal_no and gl.action_dt < gl_entry.action_dt and gl_entry.gl_entry_type LIKE 'accrue%')),
    		'FIXING')) AS fxmult_ccy_gl_prev_dt,
    	(select dbo.qsp_laf_fxrate(fxdeals.domccy,
    		(select max(gl.action_dt) from gl_entry gl,cflows cf where ( gl.deal_no=cf.deal_no and gl.action_dt=cf.cflow_dt and gl.deal_leg = gl_entry.deal_leg and gl.deal_no=gl_entry.deal_no and gl.action_dt < gl_entry.action_dt and gl_entry.gl_entry_type LIKE 'accrue%')),
    		'FIXING')) AS fxmult_ccy_dom_gl_prev_dt,
    
    	(select dbo.qsp_laf_fxrate(glsaprpt.ccy,
    		(select max(cflow_dt) from cflows cf where (cf.deal_no=cflows.deal_no and (cf.flag=cflows.flag or (cf.flag is null and cflows.flag is null)) and cf.cflow_dt<cflows.cflow_dt  and gl_entry.gl_entry_type NOT LIKE 'accrue%')),
    		'FIXING')) AS fxmult_ccy_int_prev_dt,
    	(select dbo.qsp_laf_fxrate(fxdeals.domccy,
    		(select max(cflow_dt) from cflows cf where (cf.deal_no=cflows.deal_no and (cf.flag=cflows.flag or (cf.flag is null and cflows.flag is null)) and cf.cflow_dt<cflows.cflow_dt  and gl_entry.gl_entry_type NOT LIKE 'accrue%')),
    		'FIXING')) AS fxmult_ccy_dom_int_prev_dt,
    
    	(select dbo.qsp_laf_fxrate(glsaprpt.ccy,deals.mature_dt,'FIXING')) AS fxmult_ccy_maturedt,
    	(select dbo.qsp_laf_fxrate(fxdeals.domccy,deals.mature_dt,'FIXING')) AS fxmult_domccy_maturedt
    
    FROM   
    	(((((((((((((((((((glsaprpt  
    	LEFT OUTER JOIN deals 
    		ON glsaprpt.deal_no=deals.deal_no) 
    	LEFT OUTER JOIN chart_acc 
    		ON glsaprpt.chart_acc_id=chart_acc.chart_acc_id) 
    	LEFT OUTER JOIN gl_entry 
    		ON glsaprpt.trans_no=gl_entry.gl_entry_id)
    		-- AND (glsaprpt.deal_no=gl_entry.deal_no)  -- > Redundant query
    	LEFT OUTER JOIN acrl_item_post 
    		ON gl_entry.post_item_id=acrl_item_post.acrl_item_post_id) 
    	LEFT OUTER JOIN cflows 
    		ON gl_entry.cflow_id=cflows.cflow_no) 
    		--AND (gl_entry.deal_no=cflows.deal_no))  -- > Redundant query
    	LEFT OUTER JOIN bankacc
    		ON cflows.bank_acc=bankacc.acc_no)
    	LEFT OUTER JOIN cparty bankacc_cparty
    		ON bankacc.cparty=bankacc_cparty.thekey)
    	LEFT OUTER JOIN cpdelacc
    		ON cflows.vostro_acc=cpdelacc.thekey)
    	LEFT OUTER JOIN cparty cpdelacc_cparty
    		ON cpdelacc.cparty=cpdelacc_cparty.thekey)
    	LEFT OUTER JOIN bustruct 
    		ON deals.entity=bustruct.thekey) 
    		-- ON gl_entry.gl_owner_id=bustruct.bustruct_id --> Relevant if the entity is posting to a seperate business structure
    	LEFT OUTER JOIN sectype 
    		ON deals.sectype=sectype.thekey) 
    	LEFT OUTER JOIN fxdeals 
    		ON deals.deal_no=fxdeals.deal_no) 
    	LEFT OUTER JOIN swdeals 
    		ON deals.deal_no=swdeals.deal_no) 
    	LEFT OUTER JOIN acdeals  
    		ON cflows.deal_no=acdeals.deal_no) 
    	LEFT OUTER JOIN cparty 
    		ON deals.cparty=cparty.thekey) 
    	LEFT OUTER JOIN cptype 
    		ON cparty.cptype=cptype.thekey) 
    	LEFT OUTER JOIN anacode ac_cp02 
    		ON cparty.analyse02=ac_cp02.thekey)
    	LEFT OUTER JOIN anacode ac_st02 
    		ON sectype.analyse02=ac_st02.thekey) 
    	LEFT OUTER JOIN #lafsp_jde_base interface_basetable 
    		ON (gl_entry.deal_no=interface_basetable.deal_no)
    		AND (gl_entry.action_dt=interface_basetable.cflow_dt) 
    		AND (gl_entry.amount=interface_basetable.amount) 
    		AND (gl_entry.gl_entry_type=interface_basetable.gl_entry_type)) 
    WHERE  
    --	glsaprpt.rptno=0 AND 
    --	(bustruct.name=N'zzzzzzzz' OR bustruct.name=N'zzzzzzz') 
    		NOT (glsaprpt.output_coa_code IN ('BASE CCY POSITION','BS NOT USED','CCY POSITION','NOT USED')) 
    	AND NOT (sectype.name=N'JDE FLOW' OR sectype.name=N'SUBSIDIARY FORECAST')
    	AND NOT (deals.trans_type in ('AA','AI','HR'))
    
    	
    DROP TABLE #lafsp_jde_base
    DROP TABLE #flowtable
    DROP TABLE #basetable
    
    END

  4. #4
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Bonjour,

    Je ne comprends exactement votre problème?
    Une Procédure stockée vous retourne un jeu d'enregistrement dont une colonne calculée vous intéresse.

    Que voulez vous faire ensuite de ce jeu de données? l'utiliser avec un select? (et de fait avec une fonction?)

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour!

    Oui la procédure stockée me renvoie un jeu de données, et une des colonnes est effectivement le fameux champ qui m'intéresse. Il s'agit d'une date, qui peut prendre des valeurs différentes selon certaines conditions, d'ou l'importance de l'encapsuler dans un CASE WHEN.

    Le problème est que je n'ai pas la possibilité de l'utiliser par la suite, dans une autre colonne finalement( puisque tu parle de colonnes). L'utilisation que je veux en faire, c'est de justement faire passer cette fameuse colonne en paramètre d'une fonction. Donc finalement créér une autre colonne qui serait le résultat de cette fonction.

    A noter que la fonction a été définie à l'exterieur de la PS et fonctionne parfaitement pour des dates fixes. Vous pouvez regarder son utilisation en fin de PS, vous comprendrez.

    Merci

  6. #6
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    En fait SQLPRO vous à déjà donné la solution (notre maître à tous... :-))

    Si vous ne voulez pas coder deux fois votre CASE WHEN il vous suffit d'encapsuler la dernière requête comme ceci (en gras les modifications):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    ALTER PROCEDURE [dbo].[lafsp_jde_trans]
    AS
    BEGIN
    	SET NOCOUNT ON;
    
    	-- Drop temporary tables if already existing:
    	IF OBJECT_ID('tempdb..#temp') IS NOT NULL DROP TABLE #temp;
    	IF OBJECT_ID('tempdb..#lafsp_jde_base') IS NOT NULL DROP TABLE #lafsp_jde_base;
    	IF OBJECT_ID('tempdb..#flowtable') IS NOT NULL DROP TABLE #flowtable;
    	IF OBJECT_ID('tempdb..#basetable') IS NOT NULL DROP TABLE #basetable;
    	
    /* TEMPORARY TABLE 1 - BASETABLE */
    SELECT  DISTINCT
    	cf.deal_no, 
    	cf.flow_no, 
    	cf.cflow_dt, 
    	cf.comments, 
    	cf.flag,
    	cf.nett_no,
    	gl.amount, 
    	gl.gl_entry_type
    INTO #basetable
    FROM  
    	cflows AS cf INNER JOIN gl_entry AS gl ON
    	cf.deal_no = gl.deal_no AND cf.cflow_dt = gl.action_dt AND cf.cflow_no = gl.cflow_id
     -- CRITERIA CURRENTLY USED FOR THE INTERFACE :
    WHERE
    	(gl.gl_entry_type LIKE 'face%' OR
    	gl.gl_entry_type LIKE 'bankacc%' OR
    	gl.gl_entry_type LIKE 'a_wtax%' OR
    	gl.gl_entry_type LIKE 'a_int%' OR
    	gl.gl_entry_type LIKE 'bs_pay_exp' OR
    	gl.gl_entry_type LIKE 'bs_rec_exp' OR
    	gl.comment_type='10740057' )  -- UNWIND PRINCIPAL
    	AND (cf.trans_type IN ('SE', 'SC', 'SI'))
    
    /* TEMPORARY TABLE 1 *CONTINUED* - BASETABLE */
    INSERT INTO #basetable 
    SELECT DISTINCT 
    	gl.deal_no, 
    	MIN(bt.flow_no) AS flow_no, 
    	gl.action_dt AS cflow_dt, 
    	bt.comments,
    	gl.deal_leg AS flag,
    	null AS nett_no,
    	gl.amount, 
    	gl.gl_entry_type
    FROM         
    	gl_entry AS gl 
    	INNER JOIN #basetable AS bt ON gl.deal_no = bt.deal_no AND gl.action_dt < bt.cflow_dt 
    WHERE    
    	(bt.comments = 'INTEREST' AND gl.gl_entry_type LIKE 'accrue INTR%') 
    	OR  (bt.comments = 'COUPON' AND gl.gl_entry_type LIKE 'accrue%')
    GROUP BY gl.deal_no, gl.action_dt, bt.comments, gl.amount, gl.gl_entry_type, gl.deal_leg
    
    /* TEMPORARY TABLE 2 - FLOWTABLE */
    SELECT bt.deal_no, bt.flow_no, bt.cflow_dt, bt.comments, bt.flag, bt.nett_no, bt.amount, bt.gl_entry_type,
    	(SELECT MIN(v2.flow_no) FROM #basetable v2 WHERE bt.deal_no = v2.deal_no AND ((bt.flag is null AND v2.flag is null) OR bt.flag=v2.flag)) AS first_flow_no,
    	(SELECT MAX(v2.flow_no) FROM #basetable v2 WHERE bt.deal_no = v2.deal_no AND ((bt.flag is null AND v2.flag is null) OR bt.flag=v2.flag)) AS last_flow_no,
    	CASE 
    		WHEN bt.gl_entry_type LIKE 'a_wtax%'
    			THEN (SELECT MAX(v2.flow_no) FROM #basetable v2 WHERE bt.deal_no = v2.deal_no AND bt.flow_no>v2.flow_no AND bt.cflow_dt>v2.cflow_dt AND not v2.gl_entry_type LIKE 'a_wtax%' AND (bt.flag is null OR bt.flag=v2.flag))
    		ELSE
    			(SELECT MAX(v2.flow_no) FROM #basetable v2 WHERE bt.deal_no = v2.deal_no AND bt.flow_no>v2.flow_no AND not v2.gl_entry_type LIKE 'a_wtax%' AND (bt.flag is null OR bt.flag=v2.flag))
    	END prev_flow_no
    INTO #flowtable
    FROM #basetable bt
    
    /* TEMPORARY TABLE 3 -  RESULT TABLE */
    SELECT ft.*, 
    	(SELECT MAX(bt.cflow_dt) FROM #basetable bt WHERE ft.deal_no=bt.deal_no AND ((ft.flag is null AND bt.flag is null) or ft.flag=bt.flag) AND ft.prev_flow_no=bt.flow_no) AS prev_flow_dt
    	--(SELECT MAX(bt.cflow_dt) FROM #basetable bt WHERE ft.deal_no=bt.deal_no AND ft.prev_flow_no=bt.flow_no ) AS interest_prev_flow_dt
    INTO #lafsp_jde_base
    FROM #flowtable ft
    --ORDER BY 1,2
    
    /* ======================= */
    SELECT * 
    ,dbo.qsp_laf_fxrate(interface_ccy,int_prev_dt,'FIXING')) AS NomColonneVoulue
    FROM (
    	SELECT DISTINCT 
    		ac_cp02.name AS cparty_analyse_code_jde, 
    		ac_st02.name AS instrument_analyse_code_jde,
    		-- cflow delivery account's bank ana02
    		CASE 
    			WHEN (deals.trans_type='AT' and deals.in_use='N') THEN (
    				select max(ana_inner.name) 
    				from cflowsi cfi_inner 
    				left outer join bankacc ba_inner on cfi_inner.bank_acc=ba_inner.acc_no
    				left outer join cparty cp_inner on ba_inner.cparty=cp_inner.thekey
    				left outer join anacode ana_inner on cp_inner.analyse02=ana_inner.thekey
    				where gl_entry.cflow_id=cfi_inner.cflow_no and cfi_inner.cflow_no=gl_entry.cflow_id and cfi_inner.out_dt>getdate()
    				)
    			WHEN cflows.bank_acc IS NULL THEN NULL -- cflow bank account's bank ana02
    			ELSE (SELECT ac.name FROM anacode ac WHERE bankacc_cparty.analyse02=ac.thekey)
    			END ac_bankacc_cp02,
    		CASE 
    			WHEN cflows.vostro_acc IS NULL THEN NULL
    			ELSE (SELECT ac.name FROM anacode ac INNER JOIN cparty cp ON ac.thekey=cp.analyse02 INNER JOIN cpdelacc ssi ON ssi.cparty=cp.thekey WHERE cflows.vostro_acc=ssi.thekey)
    			END ac_cpdelacc_cp02,
    		acrl_item_post.acrl_item_id AS acrl_item_acrl_item_id, 
    		acrl_item_post.posting_date AS acrl_item_posting_date,
    		bankacc_cparty.code AS cflow_bank_code,
    		bankacc_cparty.name AS cflow_bank_name,
    		bustruct.name AS entity_name, 
    		bustruct.thekey AS entity_thekey, 
    		CASE 
    			WHEN deals.trans_type not in ('AC','AT') THEN NULL
    			ELSE (SELECT bust.name FROM bustruct bust WHERE (bust.bustruct_id=gl_entry.gl_owner_id and glsaprpt.trans_no = gl_entry.gl_entry_id))
    			END entity_ac_at,
    		cflows.comments AS cflow_comments, 
    		CASE 
    			WHEN cflows.match_det IS NULL THEN NULL
    			ELSE (SELECT MAX (cf.deal_no) FROM cflows cf WHERE cf.match_det=cflows.match_det and cf.deal_no<>cflows.deal_no and cf.bank_acc=cflows.bank_acc)
    			END cflow_matched_deal_no,
    		CASE 
    			WHEN gl_entry.gl_entry_type LIKE 'accrue%' 
    			THEN (select max(gl.action_dt) from gl_entry gl,cflows cf where ( gl.deal_no=cf.deal_no and gl.action_dt=cf.cflow_dt and gl.deal_leg = gl_entry.deal_leg and gl.deal_no=gl_entry.deal_no and gl.action_dt < gl_entry.action_dt))
    			ELSE (select max(cflow_dt) from cflows cf where (cf.deal_no=cflows.deal_no and (cf.flag=cflows.flag or (cf.flag is null and cflows.flag is null)) and cf.cflow_dt<cflows.cflow_dt))
    			END int_prev_dt,
    		cflows.flow_no AS cflow_flow_no,
    		chart_acc.account_type AS coa_account_type,
    		chart_acc.coa_code AS coa_coa_code, 
    		chart_acc.used_by_ba AS coa_used_by_ba, 
    		cparty.code AS cparty_code, 
    		cpdelacc_cparty.name AS cpdelacc_bank_name,
    		cptype.name AS cptype_name, 
    		deals.act_mat_dt AS deal_act_mat_dt,
    		deals.ccy AS deal_ccy, 
    		deals.ccy2 AS deal_ccy2, 
    		deals.cur_mat_dt AS deal_cur_mat_dt, 
    		deals.deal_dt AS deal_deal_dt, 
    		deals.deal_no AS deal_deal_no, 
    		deals.eff_mat_dt AS deal_eff_mat_dt,
    		deals.external_ref_id AS deal_external_ref_id,
    		deals.in_use AS deal_in_use,
    		deals.mature_dt AS deal_mature_dt, 
    		deals.settle_dt AS deal_settle_dt, 
    		deals.ticket_no AS deal_ticket_no,
    		deals.trans_type AS deal_trans_type, 
    		fxdeals.domccy AS fxdeal_domccy, 
    		fxdeals.spot_rate AS fxdeal_spot_rate, 
    		fxdeals.swap_side AS fxdeal_swap_side,
    		fxdeals.contr_rate AS fxdeal_contr_rate,
    		CASE 
    			WHEN fxdeals.swap_link>0 THEN (select dd.mature_dt from fxdeals fx INNER JOIN deals dd ON fx.deal_no = dd.deal_no where  (fx.deal_no<>fx.swap_link)and fxdeals.deal_no=fx.swap_link)
    			ELSE NULL
    		END fxdeals_other_mature_dt,
    		CASE 
    			WHEN deals.trans_type='AC' THEN (SELECT acd.fx_rate FROM acdeals acd WHERE acd.deal_no=deals.deal_no)
    			ELSE NULL
    			END acdeal_fx_rate,
    		gl_entry.comment_type AS gl_comment_type,
    		gl_entry.exch_group AS gl_exch_group,
    		gl_entry.exch_type AS gl_exch_type,
    		gl_entry.gl_entry_type AS gl_gl_entry_type,
    		gl_entry.gl_owner_id AS gl_gl_owner_id,
    		gl_entry.reversal_status AS gl_reversal_status, 
    		gl_entry.trans_type AS gl_trans_type, 
    		glsaprpt.amount AS interface_amount, 
    		glsaprpt.base_amt AS interface_base_amt, 
    		glsaprpt.base_ccy AS interface_base_ccy,
    		glsaprpt.base_rate AS interface_base_rate,
    		glsaprpt.ccy AS interface_ccy, 
    		glsaprpt.deal_no AS interface_deal_no, 
    		glsaprpt.gl_entry_type AS interface_gl_entry_type, 
    		glsaprpt.output_coa_code AS interface_output_coa_code, 
    		glsaprpt.ext_accprd AS interface_ext_accprd,
    		glsaprpt.source_cde AS interface_source_cde,
    		glsaprpt.narrative AS interface_narrative,
    		glsaprpt.ref1 AS interface_ref1,  
    		glsaprpt.ref2 AS interface_ref2, 
    		glsaprpt.allocation AS interface_allocation,
    		glsaprpt.busarea AS interface_busarea,
    		glsaprpt.compcode AS interface_compcode,
    		glsaprpt.rptno AS interface_rptno, 
    		glsaprpt.trans_dt AS interface_transaction_date, 
    		glsaprpt.trans_no AS interface_transaction_no, 
    		sectype.code AS instrument_code, 
    		sectype.formula AS instrument_formula,
    		sectype.name AS instrument_name, 
    		swdeals.exch_rate AS swdeal_exch_rate, 
    		--interface_basetable.nett_no AS cflow_nett_no, 
    		cflows.nett_no AS cflow_nett_no, 
    	--	CASE WHEN interface_basetable.nett_no IS NULL THEN NULL
    	--		ELSE (SELECT SUM(cflows.amount) FROM cflows WHERE cflows.nett_no=interface_basetable.nett_no)
    	--		END cflow_total_nett_amount,
    		CASE 
    			WHEN cflows.nett_no IS NULL THEN NULL
    			ELSE (SELECT SUM(cfl.amount) FROM cflows cfl WHERE cfl.nett_no=cflows.nett_no)
    			END cflow_total_nett_amount,
    		interface_basetable.first_flow_no AS deal_schedule_first_flow_no, 
    		interface_basetable.flow_no AS deal_schedule_flow_no, 
    		interface_basetable.prev_flow_no AS deal_schedule_previous_flow_no,
    		interface_basetable.prev_flow_dt AS deal_schedule_previous_flow_dt,
    		--interface_basetable.interest_prev_flow_dt AS deal_schedule_previous_int_flow_dt,	
    		(select dbo.qsp_laf_latestAI(cflows.deal_no,cflows.trans_type)) AS AI_count,
    		(select dbo.qsp_laf_fxrate(glsaprpt.ccy,deals.deal_dt,'FIXING')) AS fxmult_ccy_dealdt,
    		(select dbo.qsp_laf_fxrate(fxdeals.domccy,deals.deal_dt,'FIXING')) AS fxmult_domccy_dealdt,
    		(select dbo.qsp_laf_fxrate(glsaprpt.ccy,deals.settle_dt,'FIXING')) AS fxmult_ccy_settledt,
    		(select dbo.qsp_laf_fxrate(fxdeals.domccy,deals.settle_dt,'FIXING')) AS fxmult_domccy_settledt,
    		(select dbo.qsp_laf_fxrate(glsaprpt.ccy,glsaprpt.trans_dt,'FIXING')) AS fxmult_ccy_transdt,
    		(select dbo.qsp_laf_fxrate(fxdeals.domccy,glsaprpt.trans_dt,'FIXING')) AS fxmult_domccy_transdt,
    		(select dbo.qsp_laf_fxrate(glsaprpt.ccy,interface_basetable.prev_flow_dt,'FIXING')) AS fxmult_ccy_prevflowdt,
    		(select dbo.qsp_laf_fxrate(fxdeals.domccy,interface_basetable.prev_flow_dt,'FIXING')) AS fxmult_domccy_prevflowdt,
    		--(select dbo.qsp_laf_fxrate(glsaprpt.ccy,interface_basetable.interest_prev_flow_dt,'FIXING')) AS fxmult_ccy_int_prevflowdt,
    		--(select dbo.qsp_laf_fxrate(fxdeals.domccy,interface_basetable.interest_prev_flow_dt,'FIXING')) AS fxmult_domccy_int_prevflowdt,
    
    		(select dbo.qsp_laf_fxrate(glsaprpt.ccy,
    			(select max(gl.action_dt) from gl_entry gl,cflows cf where ( gl.deal_no=cf.deal_no and gl.action_dt=cf.cflow_dt and gl.deal_leg = gl_entry.deal_leg and gl.deal_no=gl_entry.deal_no and gl.action_dt < gl_entry.action_dt and gl_entry.gl_entry_type LIKE 'accrue%')),
    			'FIXING')) AS fxmult_ccy_gl_prev_dt,
    		(select dbo.qsp_laf_fxrate(fxdeals.domccy,
    			(select max(gl.action_dt) from gl_entry gl,cflows cf where ( gl.deal_no=cf.deal_no and gl.action_dt=cf.cflow_dt and gl.deal_leg = gl_entry.deal_leg and gl.deal_no=gl_entry.deal_no and gl.action_dt < gl_entry.action_dt and gl_entry.gl_entry_type LIKE 'accrue%')),
    			'FIXING')) AS fxmult_ccy_dom_gl_prev_dt,
    
    		(select dbo.qsp_laf_fxrate(glsaprpt.ccy,
    			(select max(cflow_dt) from cflows cf where (cf.deal_no=cflows.deal_no and (cf.flag=cflows.flag or (cf.flag is null and cflows.flag is null)) and cf.cflow_dt<cflows.cflow_dt  and gl_entry.gl_entry_type NOT LIKE 'accrue%')),
    			'FIXING')) AS fxmult_ccy_int_prev_dt,
    		(select dbo.qsp_laf_fxrate(fxdeals.domccy,
    			(select max(cflow_dt) from cflows cf where (cf.deal_no=cflows.deal_no and (cf.flag=cflows.flag or (cf.flag is null and cflows.flag is null)) and cf.cflow_dt<cflows.cflow_dt  and gl_entry.gl_entry_type NOT LIKE 'accrue%')),
    			'FIXING')) AS fxmult_ccy_dom_int_prev_dt,
    
    		(select dbo.qsp_laf_fxrate(glsaprpt.ccy,deals.mature_dt,'FIXING')) AS fxmult_ccy_maturedt,
    		(select dbo.qsp_laf_fxrate(fxdeals.domccy,deals.mature_dt,'FIXING')) AS fxmult_domccy_maturedt
    
    	FROM   
    		(((((((((((((((((((glsaprpt  
    		LEFT OUTER JOIN deals 
    			ON glsaprpt.deal_no=deals.deal_no) 
    		LEFT OUTER JOIN chart_acc 
    			ON glsaprpt.chart_acc_id=chart_acc.chart_acc_id) 
    		LEFT OUTER JOIN gl_entry 
    			ON glsaprpt.trans_no=gl_entry.gl_entry_id)
    			-- AND (glsaprpt.deal_no=gl_entry.deal_no)  -- > Redundant query
    		LEFT OUTER JOIN acrl_item_post 
    			ON gl_entry.post_item_id=acrl_item_post.acrl_item_post_id) 
    		LEFT OUTER JOIN cflows 
    			ON gl_entry.cflow_id=cflows.cflow_no) 
    			--AND (gl_entry.deal_no=cflows.deal_no))  -- > Redundant query
    		LEFT OUTER JOIN bankacc
    			ON cflows.bank_acc=bankacc.acc_no)
    		LEFT OUTER JOIN cparty bankacc_cparty
    			ON bankacc.cparty=bankacc_cparty.thekey)
    		LEFT OUTER JOIN cpdelacc
    			ON cflows.vostro_acc=cpdelacc.thekey)
    		LEFT OUTER JOIN cparty cpdelacc_cparty
    			ON cpdelacc.cparty=cpdelacc_cparty.thekey)
    		LEFT OUTER JOIN bustruct 
    			ON deals.entity=bustruct.thekey) 
    			-- ON gl_entry.gl_owner_id=bustruct.bustruct_id --> Relevant if the entity is posting to a seperate business structure
    		LEFT OUTER JOIN sectype 
    			ON deals.sectype=sectype.thekey) 
    		LEFT OUTER JOIN fxdeals 
    			ON deals.deal_no=fxdeals.deal_no) 
    		LEFT OUTER JOIN swdeals 
    			ON deals.deal_no=swdeals.deal_no) 
    		LEFT OUTER JOIN acdeals  
    			ON cflows.deal_no=acdeals.deal_no) 
    		LEFT OUTER JOIN cparty 
    			ON deals.cparty=cparty.thekey) 
    		LEFT OUTER JOIN cptype 
    			ON cparty.cptype=cptype.thekey) 
    		LEFT OUTER JOIN anacode ac_cp02 
    			ON cparty.analyse02=ac_cp02.thekey)
    		LEFT OUTER JOIN anacode ac_st02 
    			ON sectype.analyse02=ac_st02.thekey) 
    		LEFT OUTER JOIN #lafsp_jde_base interface_basetable 
    			ON (gl_entry.deal_no=interface_basetable.deal_no)
    			AND (gl_entry.action_dt=interface_basetable.cflow_dt) 
    			AND (gl_entry.amount=interface_basetable.amount) 
    			AND (gl_entry.gl_entry_type=interface_basetable.gl_entry_type)) 
    	WHERE  
    	--	glsaprpt.rptno=0 AND 
    	--	(bustruct.name=N'zzzzzzzz' OR bustruct.name=N'zzzzzzz') 
    			NOT (glsaprpt.output_coa_code IN ('BASE CCY POSITION','BS NOT USED','CCY POSITION','NOT USED')) 
    		AND NOT (sectype.name=N'JDE FLOW' OR sectype.name=N'SUBSIDIARY FORECAST')
    		AND NOT (deals.trans_type in ('AA','AI','HR'))
    ) AS TMP
    	
    DROP TABLE #lafsp_jde_base
    DROP TABLE #flowtable
    DROP TABLE #basetable
    
    END

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/02/2013, 16h41
  2. Réponses: 3
    Dernier message: 03/07/2008, 20h52
  3. Réponses: 2
    Dernier message: 20/09/2006, 14h38
  4. problème procédure stockée
    Par hamham dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 19/04/2006, 12h33
  5. Problème procédure stockée + trie
    Par an_merle dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 14/02/2006, 22h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo