我真的需要你的帮助,因为这个问题是在我的知识水平之上,因为它涉及SQL世界。
我想修改和格式化我现有的SQL Crosstab查询,这样我就可以添加一个新的表行,它允许每个列总数的总和(这将产生结果)下图标题为“CROSSTAB TABLE A w / TOTALS”)
CROSSTAB - 表A是以下当前SQL查询的产品(从表A处理数据)
TRANSFORM Count(TableA.[Division]) AS CountOfDivision
SELECT TableA.[Branch], TableA.Division
FROM TableA
GROUP BY TableA.[Branch], TableA.Division
PIVOT TableA.[RequestType];
使用MS Access / ADO Jet 4.0运行,它将从顶层表中获取数据(这是MDB文件中当前数据结构的一个工作示例),并在下面描述的第二个表中生成结果度量表因此,将[请求类型]列转换为行标题和计数,然后按部门排序。
这对我来说似乎是高级SQL代数,远远超出了我的SQL知识/编程水平。
答案 0 :(得分:1)
在SQL中你会用CUBE / ROLLUP等做一些有趣的东西。但是我不知道在ms-access中可以访问什么或者什么不可访问。我要做的是建立2-3个视图。 1提供您的Cross表。 1得到所有总计和1所有联合所有查询1& 2.您当然可以将所有这些组合到一个查询中,但我发现在访问中有时会遇到挑战。
如果这是用于报告或Excel,则报告或Excel将是创建总计行的适当位置。
答案 1 :(得分:0)
我在这里建立了@Matt的答案。我会将交叉表从联合查询中删除:
SELECT Branch, Division, RequestType, 1 AS CountOfDivision
FROM TableA
UNION
SELECT 'Total' AS Branch, NULL AS Division, RequestType,
Sum(1) AS CountOfDivision
FROM TableA
GROUP BY RequestType
然后你可以这样做:
TRANSFORM Sum(CountOfDivision) AS Counts
SELECT Branch, Division
FROM MyUnionQuery
GROUP BY Branch, Division
PIVOT RequestType
最后,您需要添加一些逻辑来将总计行排序到底部。
答案 2 :(得分:0)
考虑两个聚合查询的并集 - 在 Branch 和 Division 级别的组,另一个没有完整 Total 的任何分组。 MS Access的交叉表查询实际上可以重写为条件聚合(在大多数RDMS中通常的转向方式)。这当然假设,旋转列不是太多,以至于脚本不可行:
SELECT TableA.[Branch], TableA.Division,
SUM(IIF(TableA.Division='Report', 1, 0)) As [Report],
SUM(IIF(TableA.Division='Financial Analysis', 1, 0)) As [Financial Analsyis],
SUM(IIF(TableA.Division='Research Paper', 1, 0)) As [Research Paper]
FROM TableA
GROUP BY TableA.[Branch], TableA.Division;
UNION
SELECT 'Total' As Branch, '' As Division,
SUM(IIF(TableA.Division='Report', 1, 0)) As [Report],
SUM(IIF(TableA.Division='Financial Analysis', 1, 0)) As [Financial Analsyis],
SUM(IIF(TableA.Division='Research Paper', 1, 0)) As [Research Paper]
FROM TableA;