说我有一个名为 PO_HEADER 的下表,其中包含以下数据:
PO_HEADER_ID PO_NUMBER LEGAL_ENTITY_ID
------------- --------- ----------------
1 XXX1 101
2 XXX2 101
3 XXX3 102
和另一个名为 LEGAL_ENTITY 的表,其中包含以下数据:
LEGAL_ENTITY_ID LEGAL_ENTITY_NAME DETAILS
--------------- --------------------- -----------
101 BB new
102 FF old
103 LH middle
我在BI Publisher中进行了以下数据集查询以及两个名为p_po_number
和p_is_draft
的参数:
DS1:
Select PO_HEADER_ID as PO_HEADER_ID
, PO_NUMBER as PO_NUMBER
, LEGAL_ENTITY_ID as LE_ID
from PO_HEADER
where PO_NUMBER = :p_po_number
and 'Y' = :p_is_draft
DS2:
Select PO_HEADER_ID as PO_HEADER_ID
, PO_NUMBER as PO_NUMBER
, LEGAL_ENTITY_ID as LE_ID
from PO_HEADER
where PO_NUMBER = :p_po_number
and 'N' = :p_is_draft
DS3:
select LEGAL_ENTITY_NAME as LEGAL_ENTITY_NAME
, DETAILS as LEGAL_ENTITY_DETAILS
from LEGAL_ENTITY
where LEGAL_ENTITY_ID = :LE_ID
DS1被组链接到DS3,DS2也被组链接到DS3。 方案如下:
方案2正常运行:当提供p_is_draft =“ N”和p_po_number“ XXX1”时,它将显示DS2和DS3的正确数据。
方案2的XML输出示例:
<DS2>
<PO_HEADER_ID>1</PO_HEADER_ID>
<PO_NUMBER>XXX1</PO_NUMBER>
<LE_ID>101</LE_ID>
<DS3>
<LEGAL_ENTITY_NAME>BB</LEGAL_ENTITY_NAME>
<LEGAL_ENTITY_DETAILS>new</LEGAL_ENTITY_DETAILS>
</DS3>
</DS2>
但是,问题出在方案1。当提供p_is_draft =“ Y”和p_po_number“ XXX1”时,仅显示DS1的数据。
方案1的XML输出示例:
<DS2>
<PO_HEADER_ID>1</PO_HEADER_ID>
<PO_NUMBER>XXX1</PO_NUMBER>
<LE_ID>101</LE_ID>
</DS2>
为什么当与DS1给出的LEGAL_ENTITY_ID匹配时,DS3不显示数据?
重要说明:我知道“ p_is_draft”似乎毫无意义,但这是我无法删除的。