MS Access 2007 在查询中旋转数据并从 Excel 调用
Posted
技术标签:
【中文标题】MS Access 2007 在查询中旋转数据并从 Excel 调用【英文标题】:MS Access 2007 pivoting data in query and calling from Excel 【发布时间】:2017-01-25 12:09:27 【问题描述】:我对此有点困惑。 *** 上有类似的主题,但我没有找到答案,而且实际上很难知道如何描述我要搜索的内容以放入搜索框中。
我在 MS Access 数据库中有这个查询,它返回按产品和总数量分组的销售商品。数据的存储方式,它按年份细分,然后按月份再次细分(FiscalPeriod 01-12 (Jan-Dec))。目前,我的查询如下所示:
SELECT CI_item.ItemCode, CI_item.ItemCodeDesc, Im_ItemWhseHistoryByPeriod.FiscalCalYear, Im_ItemWhseHistoryByPeriod.FiscalCalPeriod, ([QuantitySold]+[QuantityIssued]-[QuantityReturnedCustomer]) AS Quantity FROM CI_item INNER JOIN Im_ItemWhseHistoryByPeriod ON CI_item.ItemCode = Im_ItemWhseHistoryByPeriod.ItemCode;
我正在尝试找出一种方法将月份放入他们自己的专栏中,以便我可以实现这样的目标:
我已尝试在 Access 查询中使用“透视视图”进行一些试验,但这并不能满足我的需求,而且我无法使用 SQL 语句从 Excel 中查询它。我考虑将其分解为许多不同的查询,但我只是想知道是否有人知道更好的方法。我根本不是 SQL 查询方面的专家,尤其是在笨拙的 Access 编辑器方面。
提前非常感谢!
【问题讨论】:
【参考方案1】:通过想象我这样尝试的数据
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(fiscal_per_month)
from table
group by fiscal_per_month
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT item_code,item_code_desc,' + @cols + ',total from
(
select *,sum(quantity)over(partition by year) as total
from table
) x
pivot
(
sum(quantity)
for months in (' + @cols + ')
) p '
exec(@query);
【讨论】:
非常感谢您的意见。这对于 SQL Server 来说看起来很棒,但不幸的是,这是 Access 2007。【参考方案2】:呃。这就是“Crosstab”查询的用途,所以我自己解决了这个问题。运行向导生成了这段代码,效果很好:
TRANSFORM Sum(qry_AllProducts.[Quantity]) AS SumOfQuantity
SELECT qry_AllProducts.[ItemCode], qry_AllProducts.[ItemCodeDesc], qry_AllProducts.[FiscalCalYear], Sum(qry_AllProducts.[Quantity]) AS [Total Of Quantity] FROM qry_AllProducts 按 qry_AllProducts.[ItemCode]、qry_AllProducts.[ItemCodeDesc]、qry_AllProducts.[FiscalCalYear] 分组 PIVOT qry_AllProducts.[FiscalCalPeriod];
唯一的窍门是,您实际上不能通过 Excel 中的 ADODB SQL 命令来提取它,所以我必须创建一个额外的“生成表”查询,指向交叉表的结果,然后将其作为临时表数据库中的表。然后可以从 Excel 中查询。我需要弄清楚它应该如何刷新,但这有效。感谢观看。
【讨论】:
以上是关于MS Access 2007 在查询中旋转数据并从 Excel 调用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MS ACCESS 2007 查询中使用 LIMIT
如何通过 Java 从 MS Access 2007 数据库中读取 Unicode 字符?
通过 VBA 自动使用查询从 Ms Access 2007 生成报告