ril*_*131 1 sql ms-access vba ms-access-2007 access-vba
我为制造工厂构建了一个访问应用程序,并为他们提供了一个报告,列出了流程中的不同数据点.我有办法生成如下所示的报告.
Batch Zone Value1 Value 2 etc.
25 1 5 15
25 2 12 31
26 1 6 14
26 2 10 32
Run Code Online (Sandbox Code Playgroud)
但是,需要以不同的格式查看数据.他们希望每批一行,所有数据都是水平的.像这样...
Zone 1 Zone 2
Batch Value1 Value2 Value1 Value2
25 5 15 12 31
26 6 14 10 32
Run Code Online (Sandbox Code Playgroud)
总共将有157列,如第二个示例中所示.有7个唯一的字段名称,但其余的是14种不同的重复数据类型.我无法获得以他们想要的格式显示数据的查询,这是因为字段名称是相同的,但是第一种方式并不难.我可以使用VBA将数据插入表中,但我不能使用重复的字段名称,所以当我将其导出到Excel时,字段名称不会有任何意义,并且不能有部分(如zone1)我可以将报告链接到此,但报告宽度只能是22",所以我必须导出然后在另一端进行excel表的一些vba处理,以便清晰地显示.
我可以将数据转换为格式#1,有什么方法可以根据批号在一个长行中显示数据?有没有其他人知道这是如何可行的?
对任何建议开放.谢谢!
在你的问题中,你这么说
我有办法生成如下所示的报告
然后将数据列为
Batch Zone Value1 Value2
----- ---- ------ ------
25 1 5 15
25 2 12 31
26 1 6 14
26 2 10 32
Run Code Online (Sandbox Code Playgroud)
现在也许数据可能已经在某个地方处于"非旋转"形式(在不同Value的行中具有不同的s),但如果没有,那么你将使用类似下面的查询来实现
SELECT
[Batch],
"Zone" & [Zone] & "_" & "Value1" AS [ValueID],
[Value1] AS [ValueValue]
FROM BatchDataByZone
UNION ALL
SELECT
[Batch],
"Zone" & [Zone] & "_" & "Value2" AS [ValueID],
[Value2] AS [ValueValue]
FROM BatchDataByZone
Run Code Online (Sandbox Code Playgroud)
...返回:
Batch ValueID ValueValue
----- ------------ ----------
25 Zone1_Value1 5
25 Zone2_Value1 12
26 Zone1_Value1 6
26 Zone2_Value1 10
25 Zone1_Value2 15
25 Zone2_Value2 31
26 Zone1_Value2 14
26 Zone2_Value2 32
Run Code Online (Sandbox Code Playgroud)
但是,如果您将该查询保存为[BatchDataUnpivoted],那么您可以使用简单的交叉表查询来"串出"每个批处理的值...
TRANSFORM Sum(BatchDataUnpivoted.[ValueValue]) AS SumOfValueValue
SELECT BatchDataUnpivoted.[Batch]
FROM BatchDataUnpivoted
GROUP BY BatchDataUnpivoted.[Batch]
PIVOT BatchDataUnpivoted.[ValueID];
Run Code Online (Sandbox Code Playgroud)
... ...返回
Batch Zone1_Value1 Zone1_Value2 Zone2_Value1 Zone2_Value2
----- ------------ ------------ ------------ ------------
25 5 15 12 31
26 6 14 10 32
Run Code Online (Sandbox Code Playgroud)