Правильный способ отображения различных возможных параметров для выбора пользователем при запуске Script изнутри системы ERP - PullRequest
0 голосов
/ 23 января 2020

Это пример данных

Параметры отчета

В настоящее время я разрабатываю отчет SQL, который будет запускаться изнутри ERP система. Идея, лежащая в основе этого кода, состоит в том, чтобы привести все открытые элементы AR со всеми этими полями в отметку SELECT и иметь возможность выбирать, для чего должен запускаться отчет, с помощью различных опций предложений WHERE, которые я описываю.

I также приложите таблицу внутри системы ERP с именами «параметров», и пользователю опций придется запустить отчет как ...

Я не могу заставить работать все эти операторы CASE & OR или предоставьте конкретные c данные на основе критериев поиска.

Я даже не уверен, что правильно отображаю параметры в коде предложения WHERE (с "<>" или по имени поля или с '', ...)

Я не такой продвинутый пользователь с SQL, поэтому я прошу вашей помощи, так как я уверен, что у вас будут более простые способы разработки этот отчет.

Параметры, определенные системой

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

Любые предложения, возможно, другой способ собрать все сценарии вместе, что-то более простое, чтобы показать то же самое, любые эксперименты от Вы действительно очень eciated. Большое спасибо заранее.

...