2017-08-24 2 views
0

Ma requête:SQL Server 2014 à l'exception des lignes

`SELECT gft_key, 
DonorCustomer.cst_ind_full_name_dn as 'Full Name', 
DonorCustomer.cst_ixo_title_dn as 'Job Title', 
DonorCustomer.cst_org_name_dn as 'Organization', 
DonorCustomer.cst_eml_address_dn as 'Email Address', 
apl_code as 'Appeal Code', 
cmp_code as 'Campaign Code', 
prd_name as 'Product Name', 
chp_name as 'Chapter Name', 
adr_line1, 
adr_line2, 
adr_city as 'City', 
adr_post_code as 'Zip Code', 
adr_country as 'Country', 
mem_member_type as 'Member Type', 
ivd_amount_cp as 'Gift Amount', 
fun_code as 'Purpose Code', 
gty_type as 'Gift Type', 
gft_date as 'Gift Date', 
pay_trx_date, 
case 
when pay_trx_date is null then 'Not Paid' else 'Paid' end as 'Paid?' 
FROM 
np_gift 
JOIN np_gift_type ON gft_gty_key=gty_key 
JOIN np_constituent ON gft_dnr_cst_key=dnr_cst_key 
JOIN co_customer DonorCustomer ON dnr_cst_key=DonorCustomer.cst_key 
JOIN co_customer_x_address ON cst_cxa_key = cxa_key 
JOIN co_address ON cxa_adr_key = adr_key 
JOIN oe_product ON gft_fpc_prd_key=prd_key 
LEFT JOIN np_purpose ON gft_fun_key=fun_key 
LEFT JOIN np_campaign ON gft_cmp_key=cmp_key 
LEFT JOIN np_appeal ON gft_apl_key=apl_key 
JOIN ac_invoice_detail ON gft_ivd_key=ivd_key and ivd_void_flag=0 
left outer join ac_payment_detail on pyd_ivd_key=ivd_key 
left outer join ac_payment on pyd_pay_key=pay_key 
left outer join ac_payment_info on pay_pin_key=pin_key 
LEFT JOIN vw_client_uli_member_type ON dnr_cst_key=mem_cst_key 
LEFT JOIN co_customer_x_customer ON cxc_cst_key_1 = DonorCustomer.cst_key and (cxc_end_date is null or datediff(dd,getdate(),cxc_end_date) >=0) and cxc_rlt_code='Chapter Member' 
LEFT JOIN co_chapter ON cxc_cst_key_2=chp_cst_key 
where (pay_trx_date >= '7/1/2017' or pay_trx_date is null) 
order by gft_date` 

données d'échantillon que je reçois en exécutant la requête: Gift Date pay_trx_date 2013-11-18 2017-07-12 2013-11-29 NULL 2014-12-15 NULL 2017-06-30 NULL 2015-05-01 2017-07-01

En exécutant la requête ci-dessus je réalise l'ensemble des résultats ci-dessus. Cependant, je veux exclure les lignes où la date du cadeau est < '7/1/2017' et pay_trx_date est NULL (Tout comme les lignes du milieu dans mes exemples de données) en même temps, mais je veux garder les lignes où la date de cadeau est < = '7/1/2017' et pay_trx_date n'est pas NULL (Tout comme la première ou dernière ligne de mon exemple de données)

Répondre

0

Vous pouvez utiliser votre requête en cours comme bloc interne et filtrer une fois selon vos besoins.

SELECT * FROM (
    -- Your Current Query 
) Q 
WHERE gft_date <= '7/1/2017' AND pay_trx_date IS NOT NULL 
+0

il ne fonctionnera pas. Je ne pense pas que ce soit logique. J'ai besoin d'exclure ces lignes. – klima

+0

Quelqu'un peut-il aider en regardant la question initiale? Je vous remercie. – klima