排序分组的报告(Sorting a grouped report)

2019-10-18 06:57发布

我的模式看起来有点像这样:

SEQ  GROUP1  GROUP2  GROUP3  VALUE

其中SEQ大致相当于行号-它实际上是排序顺序,从外部表-和GROUPx领域进一步描绘的数据。 因此,举例来说:

SEQ  GROUP1  GROUP2  GROUP3  VALUE
---- ------- ------- ------- ------
1    A       A       A       123
2    A       A       A       456
3    A       B       C       foo
5    X       Y       Z       bar
4    A       B       D       baz

我想这个数据在这个层次分组,而是通过有序的SEQ 。 所以,上面的数据会产生这样的报告:

A
  A
    A
      123
      456
  B
    C
      foo
    D
      baz
X
  Y
    Z
      bar

我一直在玩的报告“分组和排序”选项,我似乎能够拥有它订购但分组,或分组而不是下令!

例如,如果我指定:

  • 集团通过GROUP1
    • 集团通过GROUP2
      • 集团通过GROUP3
        • 按订单SEQ

在分组水平字段中的值确定在哪个数据出来的顺序。 (在这种情况下,我选择了名字按照字母顺序排列,无论如何,但如果我改的名字XGROUP1123 ,它似乎就在报告的顶部)。

如果我“的顺序移动SEQ ”最高优先级,顺序是正确的,但在分组级别被打破:访问基本上对待SEQ字段作为分组级别,然后随后的层次重复该组中的每个值。

有什么办法,我可以实现我正在寻找,而无需一个SEQx为每个字段GROUPx场(而不是我目前的“全球性” SEQ )?

Answer 1:

我认为你将不得不做一个左连接这一点。 首先,创建仅使用SEQ查询,并通过序列顺序吧。 然后把你的组通过查询并离开它加入到你的第一个查询,使其保持正确的顺序。 说得通?

您查询的代码应该或多或少是:

SELECT 
First(B.SEQ) AS FirstOfSEQ, tblTest.Group1, tblTest.Group2, tblTest.Group3, tblTest.Val AS Val2 FROM (SELECT tblTest.SEQ FROM tblTest ORDER BY tblTest.SEQ) AS B 
LEFT JOIN tblTest ON B.SEQ = tblTest.SEQ 
GROUP BY tblTest.Group1, tblTest.Group2, tblTest.Group3, tblTest.Val 
ORDER BY First(B.SEQ); 

在报告布局,由SEQ订购,然后由其他值组它,你应该得到你所需要的。



Answer 2:

我解决了这个对我自己

选择TimeOffRequestID,提供yourname AS “雇员姓名”,替换(forwardcallsto, '选择一个', '语音信箱')AS “呼叫转移至”,被任命为 “评论” FROM dbo.nei_TimeOffRequest WHERE CAST(CONVERT(VARCHAR,GETDATE() 101)AS DATETIME)之间startingon和endingon ORDER BY提供yourname ASC



文章来源: Sorting a grouped report