0
select
    Users.UserId
   ,Users.FirstName + ' ' + Users.LastName AS
   ,[Month]
   ,[Day]
   ,x.[Przych]
   ,x.[Wych]
   ,x.[Przych] + [Wych] as [Ogół]
from
   (select
       CaseActionHistory.UserId
       ,month(CaseActionHistory.DateAdded) AS [Month]
       ,day(CaseActionHistory.DateAdded) AS [Day]
       ,sum(case when CaseActionHistory.CaseActionDefinitionId in (14,15,16) then 1 else 0 end) AS [Przych]
      ,sum(case when CaseActionHistory.CaseActionDefinitionId in (20,21,22,23,26) then 1 else 0 end) AS [Wych]
    from CaseActionHistory
    where CaseActionHistory.CaseActionDefinitionId in (14,15,16,20,21,22,23,26)
    group by month(CaseActionHistory.DateAdded),day(CaseActionHistory.DateAdded), CaseActionHistory.UserId
    order by month(CaseActionHistory.DateAdded) DESC,day(CaseActionHistory.DateAdded) DESC
OFFSET 0 rows
) AS x
inner join Users on x.UserId = Users.UserId

我正试图从中耗尽一些东西。我的问题是:此类查询的结果显示如下:

User    Month    Day    X
User1     7       31    6
User2     7       31    7
User3     7       31    9
User1     7       30    8
User2     7       30    7
User3     7       30    8 
User4     7       31    10
User5     7       31    20
User6     7       31    23
User4     7       30    5
User5     7       30    7
User6     7       30    65

所以实际上很少有用户被分组到首先显示的小组中,然后是第二组,等等。所以我认为 group by 或 order by 存在问题。

作为补充,我想问一个关于 SQL Server 中参数的问题。下面的代码我想设置3个参数:

User
Month
Day

但我的问题是,当我设置参数的详细信息并运行它时,一些值会相乘。同一用户乘以几次,同一个月,同一天等也报告自己没有对参数内的任何类型的变化做出反应。


报告的主要思想是显示每位员工每天、每月拨打的电话数量,并能够与其他人比较结果。

通话分为:呼出和呼入。在每个电话呼叫之后,员工都会向系统添加有关它是什么电话以及他们在此电话期间设法做了什么的信息。

所以实际上在这种情况下我们正在处理 2 个表:

CaseActionHistory 和用户

所以计划是显示每个人每天的电话数量(呼入、呼出和总和)。

由于 CaseActionHistory 表仅包含执行操作的用户 ID,我想显示此人的姓名(显然放在用户表中)。

问题是报告应该一个一个地显示大约 20 个用户,所以对于 6 月 31 日的 20 个用户一个一个地显示,对于 30 日的 20 个用户一个一个地显示,等等,但它显示 5 个用户代表第 31 个用户,然后显示相同的用户代表第 30 个用户,然后是第 31 个等的下 5 个用户(链接到显示下面情况的图像)

http://img801.imageshack.us/img801/2088/7blu.png

列是:

UserId(将替换为 UserName) Day Month Incming Outgoing Sum

7 月 31 日底部的行应该在列表的顶部,但它们不是。

4

1 回答 1

0

欢迎来到堆栈溢出。一些东西:

  1. 如果您的数据正在“相乘”,您是否可以在主选择语句中执行“不同”并确定它是否不是您的数据集重复?
  2. 你是如何应用参数的?它们应该是谓词并且与分组无关,除非是间接的。您可以通过参数限制集合,但通常不会直接影响您的分组。
  3. 你想按什么分组?年,月,(详细)?

SSRS 从数据连接(数据源)开始。然后,您应用作为查询或过程的数据集。你有一个查询。您可以使用“where User = @User”或“where User in (@User)”将谓词应用于主数据集。如果您首先在数据集中使用“@(something)”创建所述名称的文本参数,则将自动创建该参数。您可以在“报告数据”视图中看到内置字段、参数、图像、数据源、数据集,您将在使用“商业智能开发工作室”创建 SSRS 时不断使用它们。

因此,一个简单的示例是您希望将 Day 的组添加到您的“(详细信息)”行中。如果您从“工具箱”创建一个“表格”元素,它将只有一个名为“详细信息”的行。用你的 X 值和用户填充它。在底部的“设计”表面中,您将看到“行组”。右键单击“详细信息”行并选择添加父组。按“天”分组检查“添加组标题”。您现在有另一行将按天分组。您可以在新创建的组上重复此过程以获取“月份”组,依此类推。

于 2013-07-31T17:09:12.937 回答