有没有办法避免在Cognos报告提示值中具有NULL值的顶行具有一个列值(表Business Key之一)

时间:2015-05-26 13:50:58

标签: sql cognos cognos-10 cognos-bi

有没有办法避免在Cognos报告提示值中具有一个列值(表Business Key之一)的NULL值的顶行

如果用户未在值提示(Cognos Report Portal)中选择任何值并单击“完成”按钮,则结果将包含具有NULL值的其他列的列(其中一个具有值的业务键)。

选择整张桌子并没有什么不同。

`Select * From InsuranceTable`

当用户选择不在值提示中选择任何内容时,Cognos中是否有办法避免前10行

     Business_Sub_Division  Business_Division_Name  Claim_Handling_Unit
   1 NULL                   Construction            NULL
   2 NULL                   Binding Operations      NULL
   3 NULL                   E&S Casualty            NULL
   4 NULL                   Executive Assurance     NULL
   5 NULL                   Facultative Reinsurance NULL
   6 NULL                   Healthcare              NULL
   7 NULL                   Professional Liability  NULL
   8 NULL                   Open Brokerage          NULL
   9 NULL                   Property                NULL
  10 NULL                   Special Risks           NULL
  11 Asset Protection       Executive Assurance     Canada - Claims
  12 Captive Agents         Property                Executive Assurance
  13 Excess Casualty        Healthcare              Europe - Claims
  14 Financial Institutions E&S Casualty            Executive Assurance

1 个答案:

答案 0 :(得分:2)

我对你想要达到的目标感到有点困惑。但是,如果您只是想过滤掉第1列和第2列为NULL的行,即使用户没有从提示中选择一个值,那么您的过滤器可能看起来像这样(假设您选择了Claim_Handling_Unit)值提示):

(?param? IS MISSING AND [Businss_Sub_Division] IS NOT NULL AND [Claim_Handling_Unit] IS NOT NULL)
OR
(?param? IS NOT MISSING AND [Claim_Handling_Unit] = ?param?)

你有两位逻辑,一位没有选择任何东西,另一位选择了一个值。如果没有选择任何内容,那么我们只选择其他两个值都不为空的行。关键是这两个条件不重叠。要么?帕拉姆?缺失或不缺失。

您也可以使用IF完成相同的逻辑......那样:

IF (?param? IS MISSING) 
THEN ([Businss_Sub_Division] IS NOT NULL AND [Claim_Handling_Unit] IS NOT NULL) 
ELSE ([Claim_Handling_Unit] = ?param?)

..或CASE声明

CASE 
WHEN (?param? IS MISSING) THEN ([Businss_Sub_Division] IS NOT NULL AND [Claim_Handling_Unit] IS NOT NULL) 
ELSE ([Claim_Handling_Unit] = ?param?) 
END