0

我將嘗試在不太困惑的情況下對這個問題進行說明。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' 
) 

的「鏈接專家」不支持這種語法,所以你需要使用的命令:

+0

':='被用來設置價值,而不是等價。 – craig

+0

修正了它。沒有注意到,當我寫它。它還沒有完全按照我的意願去做。它將取消那條線=醫療補助,但它仍然顯示其餘部分。如果客戶不符合標準,我不希望客戶出現。 –

+0

使用記錄選擇公式(WHERE子句)可能更容易刪除不需要的數據。 – craig

回答

0

您希望將這樣的一個適應的查詢。

過程:

  • 通過選擇數據庫中獲取當前查詢|顯示SQL查詢...
  • 創建一個新的報告
  • 從數據庫中選擇專家
  • 中「添加命令」粘貼查詢,然後修改它
+0

我用以下來實現我所需要的: 'local numberVar cnt;' 'if {billing_guar_order_no_ep。guarantor_name} = 「醫療」 then' 'CNT:= CNT + 1' '其他CNT:= CNT;' 這是一個公式,@countOfMedicaid。然後我使用了「Report - > Section Expert」中的抑制規則,並使用公式: 'sum({@ countOfMedicaid},{client_guar_list_no_ep.PATID})> 0' 這已經奏效;它抑制了我不希望在報告中看到的PAT_ID,並且僅給出了沒有完整Medicaid的PAT_ID。現在問題是加起來的客戶數量......它正在計算被壓制的記錄...... –

+0

......我只希望它能夠計算未被抑制的記錄。有任何想法嗎? –

相關問題