Проблемы с данными на SQL - PullRequest
0 голосов
/ 28 июня 2018

Я не могу получить данные только для параметра BUY. Параметр SEL работает нормально. Может быть проблема с объединениями.

SELECT DISTINCT
    RP.RP_RECORD_ID,
    RP.RATE_PROFILE_NAME, 
    RPH.RATE_TYPE, 
    RPH.CHARGE_CODE, 
    RPH.TRANSPORT_MODE, 
    RPH.PLACE_OF_RECEIPT_CODE, 
    (SELECT CD_DESCRIPTION FROM CODE_DETAIL 
     WHERE CM_CODE ='145' AND CD_CODE = RPH.ORIGIN_TYPE), 
    DECODE(RPH.ORIGIN_TYPE, 'PO', RPH.ORIGIN_PORT_CODE, 'CNT' , ORIGIN_COUNTRY_CODE, 'A', ORIGIN_AREA_CODE, 'CIT', CITY_ORIGIN, 'PV', RPH.ORIGIN_REGION_CODE) ORIGIN,
    RPH.PLACE_OF_DELIVERY_CODE,  
    RPH.CARRIER_CODE, 
    PCP.PARTNER_ID, 
    PARTNER.PARTNER_NAME, 
    COM.COMMODITY_DESCRIPTION, 
    RPH.REMARK, RPH.RPH_RECORD_ID,
    RPH.ORIGIN_TYPE, RPH.DESTINATION_TYPE,
    (SELECT DISTINCT EMP.employee_name                             
     FROM partner PAR, employee EMP, partner_relationships PRE 
     WHERE PARTNER.partner_id = PAR.partner_id 
       AND PAR.partner_id = PRE.partner_id 
       AND PRE.EMPLOYEE_NO = EMP.EMPLOYEE_NO 
       AND PRE.transport_mode = RPH.transport_mode 
       AND (PRE.IMPORT_EXPORT_IND IS NULL OR    -- ' Start of New code by SB on 16-FEB-2010 for WHD136784
            PRE.IMPORT_EXPORT_IND = (CASE 
                                        WHEN (RPH.City_Origin = 'VNSGN' OR rph.origin_country_code ='VN' OR rph.origin_port_code ='VN' OR RPH.origin_port_code = 'VNSGN') 
                                           THEN 'E' 
                                        WHEN (RPH.City_Dest = 'VNSGN' OR RPH.dest_country_code = 'VN' OR RPH.dest_port_code = 'VNSGN' OR  RPH.dest_port_code = 'VNSGN') 
                                           THEN 'I' 
                                        ELSE '' 
                                   END))        --  'End of New code by SB on 16-FEB-2010 for WHD136784
       AND PRE.company_id = CP.company_id 
       AND rownum = 1) salesman,                            --   'End of WHD136784 new code
      RPH.RPH_RECORD_ID, RPH.CURRENCY_CODE 
  FROM
      RATE_PROFILE RP, RATE_PROFILE_HEADER RPH, 
      PARTNER_CHARGE_PROFILE PCP,  PARTNER , 
      COMMODITY_CODES com, OFFICES,  
      company_partners CP 
  WHERE
      RP.RP_RECORD_ID =  RPH.RP_RECORD_ID 
      AND PCP.PARTNER_ID = PARTNER.PARTNER_ID 
      AND RPH.COMMCODE_RECORD_ID = COM.CC_RECORD_ID(+) 
      AND PCP.COMPANY_ID = OFFICES.COMPANY_ID 
      AND OFFICES.OFFICE_TYPE = 'T' 
      AND partner.partner_id = CP.partner_id             
      AND CP.COMPANY_ID = '{?CompanyID}'             
      AND CP.company_id = PCP.company_id 
      AND PCP.charge_code = RPH.Charge_code    
      AND (('&psRate_type') = 'SEL' AND  PCP.charge_calculation_method = 'R' AND RPH.RP_RECORD_ID = PCP.CHARGE_RATEPROF_RECORD_ID
      OR
           ('&psRate_type') = 'BUY' AND  PCP.cost_calculation_method = 'R' AND RPH.RP_RECORD_ID = PCP.COST_RATEPROF_RECORD_ID)
       )

Данные поступают для параметра «SEL», но для «КУПИТЬ» он выбирает 0 записей. Я проверил все соединения, но не смог понять, в чем проблема. Нет проблем с условием AND ИЛИ в условии where.

Пожалуйста, предложите

1 Ответ

0 голосов
/ 29 июня 2018

Я решил эту проблему, используя следующие условия присоединения:

(RPH.RP_RECORD_ID = PCP.CHARGE_RATEPROF_RECORD_ID OR RPH.RP_RECORD_ID = PCP.COST_RATEPROF_RECORD_ID)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...