插入Crystal Reports之前的SQL端字段分组

时间:2014-09-18 19:48:20

标签: sql crystal-reports

我的公司使用数字作为分支机构的系统标识符。问题是我的最终用户不喜欢将000201视为分支名称。因此,我试图将这些数字转换为字符串,然后将卫星位置汇总到主分支。分支格式如下:

BBBBSS因此,作为一个例子,纳什维尔主要分支将遵循000201,所有卫星将按顺序关注000202,000203,000204。

我希望我们所有的细节都能汇集到纳什维尔"。因此,任何ORGID就像0002 **的实例一样,它会将所有内容汇总到一个名为" Nashville"的字段中。

很抱歉,如果我不太清楚。我一直把头撞在墙上,所以我的思绪混乱不堪。

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,我至少有两种方法可以实现这个目标;

第一种方式是直截了当,你为每个分支添加一个案例陈述,如果你有很多分支,我会选择第二种方式。

Select  case SUBSTRING(cast(Branch.Id as varchar(10)), 1, 4 ) 
        when '0002' then 'Nashville' 
        when '0003' then 'Branch 03' 
        when '0004' then 'Branch 04'
        else SUBSTRING(cast(Branch.Id as varchar(10)), 1, 4 ) end   OrgName, 
        COUNT(*) 
from Branch group by SUBSTRING(cast(Branch.Id as varchar(10)), 1, 4 )

这第二种方式你将有一个单独的表来保持分支名称等。为了演示,我将使用包含你的" 0002"的OrgId调用此表OrgTable。 Ids和包含" Nashville"的

Select OrgTable.OrgName, count(*)
from Branch
inner join OrgTable on ( OrgTable.OrgId = SUBSTRING(cast(Branch.Id as varchar(10)), 1, 4 ))
Group By OrgTable.OrgName 

我还没有检查过上面的SQL没有语法错误,但希望你能得到图片。

HTH,

答案 1 :(得分:0)

您可以在CR中创建一个简单的公式,将ORGID转换为分支名称:

//Convert ORGID to string and save branch code
local stringvar branch := left(totext({Table.ORGID},0,''),4);

//Display city based on branch code
select branch
case "0002" : "Nashville"
case "0003" : "Other City"
<...>
default : "No matching branch!"