select
(distributor_code+ '-' +master_dealer_code+ '-' +state_code+ '-' +dealer_code) as agent_code,
agent_type, company,contact_person, status, created_date as date,
(CASE
WHEN contact_mobile_no IS NOT NULL THEN contact_mobile_no
WHEN contact_mobile_no IS NULL and contact_office_no IS NOT NULL THEN contact_office_no
ELSE NULL
END) as contact_no
from sdms_agent
where agent_type ='{?AgentType}' and status ='{?Status}'
order by (distributor_code+ '-' +master_dealer_code+ '-' +state_code+ '-' +dealer_code)
实际上我想在水晶报告中设置两个参数。 agent_type(主要,分销商,主要经销商,经销商)&状态(有效,无符号,终止,暂停)。
我实际上得到了参数。但是当我选择agent_type或status时,我只能逐个选择并查看报告。例: 对于agent_type,我选择Distributor,status选择Active。肯定会为它提供正确的报告。
但是,假设我现在想查看具有所有状态的分销商。但它没有用,即使我尝试了'%e%'。它真的不能得出结果。 我想要一个列表,其中包含具有不同状态的分销商,或者具有一个状态的不同agent_type,或者在报告中查看全部。
答案 0 :(得分:1)
我能想到的解决Crystal中最简单的方法是使用select expert的公式中的switch语句。
在这个例子中你可以有类似的东西:
switch (
{?AgentType} = "Distributor", {table1;1.agent_type} = "Distributor",
{?AgentType} = "Other", {table1;1.agent_type} = "other",
true, true
)
如果您使用的是SQL Server,那么更好的方法是使用以下内容在查询中处理它:
select (distributor_code+ '-' +master_dealer_code+ '-' +state_code+ '-' +dealer_code)as agent_code , agent_type, company,contact_person, status, created_date as date, (CASE WHEN contact_mobile_no IS NOT NULL THEN contact_mobile_no WHEN contact_mobile_no IS NULL and contact_office_no IS NOT NULL THEN contact_office_no ELSE NULL END )as contact_no
from sdms_agent
where agent_type = case @AgentType when '' then agent_type else @AgentType end
and status = case @Status when -1 then status else @Status end
order by (distributor_code+ '-' +master_dealer_code+ '-' +state_code+ '-' +dealer_code)
在查询中,如果您希望它显示所有AgentTypes,则传入一个空字符串;如果您希望它显示所有状态,则传入-1。
希望它有所帮助。