这是一个难以表达的问题,但我会尽我所能:
基本上我的数据库有错误的值,我想编写我的SSRS来解释它们,而不是进入并清理数据库。
为简单起见,我的记录包含2个值: ownerid 和 case_type 。目前我们的case_types在词典上相似但在概念上相同。我想创建一个记录报告来解释这些数据的不一致性。所以......
我理想情况下会像这样转发一个简单的呼叫中心报告:
Owner | Email | Inbound Phone | Inbound Phone Call
bob | 3 | 5 | 7
jon | 1 | 2 | 3
每个所有者在哪里回复了x个电子邮件,y个“入站电话”和z个“入站电话”。 (我没有创建这些数据,现在是处理它的人。)
成:
Owner | Email | Inbound Phone Call
bob | 3 | 12
jon | 1 | 5
基本上将“入站电话”和“入站电话”记录的计数合并为一列。
PS此数据来自CRM 2011,我需要使用Fetch作为查询。我有我需要的所有记录,我只需要弄清楚如何解析坏的记录。
答案 0 :(得分:2)
SSRS会在认为遇到新组时创建新列。您开始使用的报告使用了一个字段。因此SSRS认为[Case_type]字段中的每个不同值都是一个新组,并且需要一个新列。
因此,更改组属性(右键单击列上方的灰色区域,然后选择“列组” - >“组属性...”将组表达式编辑为下面的公式)
下面的公式应该替换简单字段。在创建新组之前,SSRS将通过此公式运行每个[case_type],如果是“入站电话”,它将被替换为“入站电话”。 SSRS现在将看到这与现有组匹配,并将这些值分组到同一列中。
=Switch(
Fields!Case_Type.Value = "Inbound Phone", "Inbound Phone Call",
1 = 1, Fields!Case_Type.Value)
可以插入其他替换件来处理其他情况。如果你需要通过相似性来组合它们,那么事情会变得更加复杂。
答案 1 :(得分:0)
在SQL查询中实现结果看起来像
SELECT t1.[owner_id]
,( select sum([case_value])
from [dbo].[Table_1] t2
where t2.case_type in ('email')
and t2.owner_id = t1.owner_id) as 'Email'
,( select sum([case_value])
from [dbo].[Table_1] t3
where t3.case_type in ('inbound phone', 'inbound phone call')
and t3.owner_id = t1.owner_id) as 'Phone'
FROM [dbo].[Table_1] t1
GROUP BY t1.owner_id
我认为使用Fetch XML编写如此复杂的查询是不可能的。只有您能够为结果表中的单元格编写每个Fetch XML,它看起来像
<fetch distinct='false' mapping='logical' aggregate='true'>
<entity name='your_entity_name'>
<attribute name='value_column' alias='value_column_sum' aggregate='sum' />
<filter type='and'>
<condition attribute='case_type' operator='eq' value='desired_value_1' />
<condition attribute='case_type' operator='eq' value='desired_value_2' />
</filter>
</entity>
</fetch>