我的架构看起来有点像这样:
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
分组级别字段中的值确定数据的输出顺序。 (在这种情况下,我选择的名称仍然按字母顺序排列,但如果我将X
中GROUP1
的名称更改为123
,则它会显示在顶部报告。)
如果我将“按SEQ
排序”移至最高优先级,则订单正确,但分组级别已损坏:Access基本上将SEQ
字段视为分组级别,然后是对该组中的每个值重复后续层次结构。
如果没有每个SEQx
字段的GROUPx
字段(而不是我当前的“全局”SEQ
),我有什么方法可以实现我正在寻找的东西吗?
答案 0 :(得分: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排序,然后按其他值对其进行分组,您应该得到所需的内容。
答案 1 :(得分:-1)
我自己解决了这个问题
选择TimeOffRequestID,yourname AS“Employee Name”,Replace(forwardcallsto,'Select One','Voicemail')AS“Forward Calls To”,约会AS“Comments”FROM dbo.nei_TimeOffRequest WHERE CAST(CONVERT(VARCHAR,GETDATE(),101)AS DATETIME)在起始和结尾之间 按您的名字ASC命令