按站点返回 Oracle 客户信息的查询中出现问题

问题描述 投票:0回答:1

我的查询应该只包含在 sysdate 中修改的记录

SELECT 
/*********hz_parties******************/
       hp.party_id,
       hp.party_name,
       hp.jgzz_fiscal_code,
       To_char(hp.creation_date, 'DD/MM/YYYY'),
/*********hz_party_sites******************/
       hps.party_site_id,
       hps.party_site_number,
/*********hz_organization_profiles******************/      
       hop.attribute2,
       hop.attribute1,
       hop.attribute3,
/*********hz_locations******************/
       hzl.attribute6,
       hzl.postal_code,
       hzl.address1,
       hzl.addr_element_attribute3,
       hzl.state,
       hzl.addr_element_attribute2,
       hzl.city,
       hzl.attribute1,
       CASE
         WHEN hzl.attribute7 IS NULL THEN NULL
         ELSE (SELECT vst1.description
               FROM   fnd_vs_values_b VSV1,
                      fnd_vs_values_tl VST1
               WHERE  vsv1.value = hzl.attribute7
                      AND vsv1.attribute_category = 'Periodo de facturación'
                      AND vsv1.value_id = vst1.value_id
                      AND vsv1.enterprise_id = vst1.enterprise_id
                      AND vsv1.sandbox_id = vst1.sandbox_id
                      AND vst1.language = 'E')
       END                                     "PeriodoFacturacionId",
       hzl.attribute4                          "LimiteCredito",
       hzl.attribute3                          "ClienteId",
       /*********vendor******************/
       (SELECT vst1.description
        FROM   fnd_vs_values_b VSV1,
               fnd_vs_values_tl VST1
        WHERE  vsv1.value = hzl.attribute2
               AND vsv1.attribute_category = 'Vendedor'
               AND vsv1.value_id = vst1.value_id
               AND vsv1.enterprise_id = vst1.enterprise_id
               AND vsv1.sandbox_id = vst1.sandbox_id
               AND vst1.language = 'E')        "Vendedor",
        /*********others******************/
FROM   hz_parties hp,
       hz_party_sites hps,
       hz_organization_profiles hop,
       hz_locations hzl
WHERE 
/*********hz_parties---hz_party_sites******************/
       hp.party_type = 'ORGANIZATION'
   AND hp.party_id = hps.party_id
/*********hz_parties---hz_organization_profiles******************/
   AND hp.party_id = hop.party_id
/*********hz_party_sites---hz_locations******************/
AND hps.location_id = hzl.location_id
AND ((Trunc(HP.CREATION_DATE) = Trunc(SYSDATE)) OR
     (Trunc(hop.LAST_UPDATE_DATE) = Trunc(SYSDATE)) OR
     Trunc(hzl.LAST_UPDATE_DATE) = Trunc(SYSDATE))

我正在进行查询以按站点获取有关客户的信息。 例如,如果客户有 10 个站点,而我只修改了一个,那么它应该跳过其他 9 个站点,只返回我修改的站点,但它总共提供了 10 个站点的信息 我使用的 4 张桌子中:

  • hz_partys
  • hz_party_sites
  • hz_组织_个人资料
  • hz_位置

更改只能发生在表中:

  • hz_组织_个人资料
  • hz_位置
sql oracle plsql bi-publisher oraclereports
1个回答
0
投票

您的 WHERE 条件不限制具有相同 party_id 的行。 如果您使用现代 JOIN 语法,您应该更早看到它。

© www.soinside.com 2019 - 2024. All rights reserved.