1

我的架构看起来有点像这样:

SEQ  GROUP1  GROUP2  GROUP3  VALUE

whereSEQ大致相当于行号——它实际上是排序顺序,来自外部表——并且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

分组级别字段中的值决定了数据的输出顺序。(在这种情况下,我选择的名称无论如何都是按字母顺序排列的,但是如果我将Xin的名称更改GROUP1123,它将出现在报告的顶部。)

如果我将“Order by SEQ”移动到最高优先级,则顺序正确,但分组级别被破坏:Access 基本上将SEQ字段视为分组级别,然后为该组中的每个值重复后续层次结构。

SEQx有没有什么方法可以在没有每个字段的GROUPx字段(而不是我当前的“全局” )的情况下实现我正在寻找的东西SEQ

4

2 回答 2

0

我认为您将不得不对此进行左连接。首先,只使用 SEQ 创建一个查询,并按 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 排序,然后按其他值分组,您应该会得到所需的内容。

于 2013-06-18T14:50:03.177 回答
-1

我自己解决了这个问题

选择 TimeOffRequestID,您的姓名为“员工姓名”,替换(forwardcallsto,'Select One','Voicemail')为“转发呼叫至”,约会为来自 dbo.nei_TimeOffRequest 的“评论” WHERE CAST(CONVERT(VARCHAR,GETDATE(), 101) AS DATETIME) BETWEEN 开始和结束 ORDER BY yourname ASC

于 2013-06-18T19:54:55.190 回答