В настоящее время я разрабатываю отчет SQL
, который будет запускаться изнутри ERP system
. Идея этого кода заключается в том, чтобы собрать все AR
открытых позиций со всеми этими полями в SELECT statement
и иметь возможность выбрать, для чего будет запускаться отчет, с помощью различные варианты предложений WHERE, которые я описываю.
Я также прилагаю таблицу внутри ERP system
с именами «параметров», и пользователю параметров придется запускать отчет как .. .
Я не могу заставить работать все эти операторы CASE AND
, OR
или предоставить конкретные c данные на основе критерии поиска.
Я даже не уверен, что правильно отображаю параметры в коде предложения WHERE (с "< >
" , или по имени поля, или с помощью ' '
, ...)
Пример данных
Параметры отчета
SELECT DISTINCT
e1.rel_value AS Cust_Rep_Grp,
o1.description AS Cust_Rep_Grp_Name,
r.main_apar_id AS Head_Office,
o2.description AS Head_Office_Name,
s.apar_id AS CustID,
o3.description AS Cust_ID_Name,
s.voucher_no,
s.dim_2 AS BookingNo,
h.ext_ord_ref AS YourRef,
n.booking_day_fx AS Booking_date,
n.check_in_date_fx AS Check_in_date,
n.check_out_date_fx AS Check_out_date,
s.voucher_date AS Invoice_date,
s.due_date,
i.art_descr AS Hotel_name,
o.description AS Destination,
e2.rel_value AS City,
o.description AS City_name,
e.rel_value AS Country_code,
o4.description AS Country_name,
n.guest_fx AS Client_name,
n.pax_fx,
s.currency,
i.disc_percent AS Comm_percentage,
s.cur_amount AS Net_amt,
s.rest_curr AS Due_now,
s.voucher_type,
s.order_id
FROM acutrans s
LEFT OUTER JOIN acuheader r
ON r.client = s.client
AND s.apar_id = r.apar_id
LEFT OUTER JOIN asoheader h
ON h.client = s.client
AND h.order_id = s.order_id
LEFT OUTER JOIN asodetail i
ON i.client = s.client
AND i.order_id = s.order_id
INNER JOIN algvirelvalue e2
ON e2.client= s.client
AND e2.rel_attr_id='ZZ06'
AND e2.related_attr = 'CITY'
AND i.article = e2.article
LEFT OUTER JOIN aglrelvalue e
ON e.client= s.client
AND e.attribute_id = 'ZZ06'
AND e.rel_attr_id = 'C9'
AND e.att_value = e2.rel_value
LEFT OUTER JOIN aglrelvalue e1
ON e1.client = s.client
AND e1.attribute_id = 'A4'
AND e1.rel_attr_id = 'ZG06'
AND e1.att_value = s.apar_id
LEFT OUTER JOIN agldescription o
ON o.client= s.client
AND o.attribute_id='ZZ06'
AND o.dim_value = e2.rel_value
LEFT OUTER JOIN agldescription o1
ON o1.client= s.client
AND o1.attribute_id='ZG06'
AND o1.dim_value = e1.rel_value
LEFT OUTER JOIN agldescription o2
ON o2.client= s.client
AND o2.attribute_id='A4'
AND o2.dim_value = r.main_apar_id
LEFT OUTER JOIN agldescription o3
ON o3.client= s.client
AND o3.attribute_id='A4'
AND o3.dim_value = s.apar_id
LEFT OUTER JOIN agldescription o4
ON o4.client= s.client
AND o4.attribute_id='C9'
AND o4.dim_value = e.rel_value
LEFT OUTER JOIN afxbooking_gen n
ON s.dim_2 = n.dim_value
AND s.client = n.client
AND n.attribute_id = 'ZZ01'
WHERE
CASE WHEN '<checkin_from>' IN (' ','') THEN '*' ELSE '<checkin_from>' END LIKE n.check_in_date_fx
AND
CASE WHEN n.check_in_date_fx IN (' ','') THEN '*' ELSE n.check_in_date_fx END LIKE n.check_in_date_fx
OR
CASE WHEN s.voucher_date IN (' ','') THEN '*' ELSE s.voucher_date END LIKE s.voucher_Date
AND
CASE WHEN s.voucher_date IN (' ','') THEN '*' ELSE s.voucher_date END LIKE s.voucher_Date
OR
CASE WHEN n.booking_day_fx IN (' ','') THEN '*' ELSE n.booking_day_fx END LIKE n.booking_day_fx
AND
CASE WHEN n.booking_day_fx IN (' ','') THEN '*' ELSE n.booking_day_fx END LIKE n.booking_day_fx
OR
CASE WHEN n.check_out_date_fx IN (' ','') THEN '*' ELSE n.check_out_date_fx END LIKE n.check_out_date_fx
AND
CASE WHEN n.check_out_date_fx IN (' ','') THEN '*' ELSE n.check_out_date_fx END LIKE n.check_out_date_fx
OR
CASE WHEN s.apar_id IN (' ','') THEN '*' ELSE s.apar_id END LIKE s.apar_id
AND
CASE WHEN s.apar_id IN (' ','') THEN '*' ELSE s.apar_id END LIKE s.apar_id
OR
CASE WHEN o3.description IN (' ','') THEN '*' ELSE o3.description END LIKE o3.description
OR
CASE WHEN e1.rel_value IN (' ','') THEN '*' ELSE e1.rel_value END LIKE e1.rel_value
AND
CASE WHEN e1.rel_value IN (' ','') THEN '*' ELSE e1.rel_value END LIKE e1.rel_value
OR
CASE WHEN o1.description IN (' ','') THEN '*' ELSE o1.description END LIKE o1.description
OR
CASE WHEN r.main_apar_id IN (' ','') THEN '*' ELSE r.main_apar_id END LIKE r.main_apar_id
AND
CASE WHEN r.main_apar_idIN (' ','') THEN '*' ELSE r.main_apar_id END LIKE r.main_apar_id
OR
CASE WHEN o2.description IN (' ','') THEN '*' ELSE o2.description END LIKE o2.description
OR
CASE WHEN s.dim_2 IN (' ','') THEN '*' ELSE s.dim_2 END LIKE s.dim_2
AND
CASE WHEN s.dim_2 IN (' ','') THEN '*' ELSE s.dim_2 END LIKE s.dim_2
OR
CASE WHEN e.rel_value IN (' ','') THEN '*' ELSE e.rel_value END LIKE e.rel_value
OR
CASE WHEN s.currency IN (' ','') THEN '*' ELSE s.currency END LIKE s.currency
OR
CASE WHEN n.guest_fx IN (' ','') THEN '*' ELSE n.guest_fx END LIKE n.guest_fx
OR
CASE WHEN s.voucher_no IN (' ','') THEN '*' ELSE s.voucher_no END LIKE s.voucher_no
AND
CASE WHEN s.voucher_no IN (' ','') THEN '*' ELSE s.voucher_no END LIKE s.voucher_no
OR
CASE WHEN h.ext_ord_ref IN (' ','') THEN '*' ELSE h.ext_ord_ref END LIKE h.ext_ord_ref
OR
CASE WHEN s.order_id IN (' ','') THEN '*' ELSE s.order_id END LIKE s.order_id
AND
CASE WHEN s.order_id IN (' ','') THEN '*' ELSE s.order_id END LIKE s.order_id