我將嘗試在不太困惑的情況下對這個問題進行說明。Crystal Reports 2011 - 基於某些標準抑制信息
我們有一份報告,我們要顯示每個病人和他們的保險。病人記錄中的每項保險均按訂單號碼編號。但是,我們不僅要表明這一點,我想要符合一定的標準,以便如果保險A根據患者身份號碼下的訂單編號1,則顯示此患者的所有保險。如果患者在1號訂單中沒有保險A,則不要向該患者顯示報告中的任何信息。
在下面的代碼中,擔保人指的是保險。所以訂單號和保證人名稱就是我們所關注的。以下是我已放入Section Expert的Suppress選項的代碼。我所假設的是,如果它符合標準,TRUE將壓制信息,否則FALSE將允許信息。然而,這是不夠的,因爲它會壓制所有其他信息。
if {billing_guar_order_no_ep.guarantor_order_number} = "1" AND
{billing_guar_order_no_ep.guarantor_name} = "Medicare" then
false
else
true
什麼我假設是,它需要通過每一個患者或迭代循環,如果它發現這個信息,列出所有的患者的信息和前進,否則抑制,向前邁進。我希望這是有道理的。
例子:
|Patient ID|Order Number|Guarantor Name|
| -------- | ---------- | ------------ |
|1 | 1|Medicare |
|1 | 2|Medicaid |
|2 | 1|Medicaid |
|2 | 2|Medicare |
在上面的例子中,我要的是該報告顯示一切從患者#1(包括所有的訂單號碼),並甚至沒有表現出患者#2在報告中。但是,發生的事情是#1病人確實出現,但只有訂單號1;它會壓制所有其他信息。
我錯過了什麼?
select *
from data d
where not exists (
select 1
from data
where pat_id=d.pat_id
and order_id=1
and guarantor_name='Medicaid'
)
的「鏈接專家」不支持這種語法,所以你需要使用的命令:
':='被用來設置價值,而不是等價。 – craig
修正了它。沒有注意到,當我寫它。它還沒有完全按照我的意願去做。它將取消那條線=醫療補助,但它仍然顯示其餘部分。如果客戶不符合標準,我不希望客戶出現。 –
使用記錄選擇公式(WHERE子句)可能更容易刪除不需要的數據。 – craig