[英]MS Access 2007 pivoting data in query and calling from Excel
我有點難住了。 Stackoverflow 上有類似的主題,但我還沒有找到答案,而且實際上很難知道如何描述我要搜索的內容並將其放入搜索框中。
我在 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 查詢中使用“Pivot View”進行一些試驗,但這並沒有給我想要的東西,而且我將無法使用 SQL 語句從 Excel 中查詢它。 我考慮將其分解為許多不同的查詢,但我只是想知道是否有人知道更好的方法。 我根本不是 SQL 查詢方面的專家,尤其是在笨拙的 Access 編輯器中。
提前謝謝了!
通過想象數據我試過這樣
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);
呃。 這就是“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 GROUP BY qry_AllProducts.[ItemCode], qry_AllProducts. .[FiscalCalYear] PIVOT qry_AllProducts.[FiscalCalPeriod];
唯一的技巧是您實際上無法通過 Excel 中的 ADODB SQL 命令提取它,因此我必須創建一個額外的“制作表”查詢,指向交叉表的結果,然后作為臨時表位於數據庫。 然后可以從 Excel 中查詢。 我需要弄清楚它應該如何刷新,但這有效。 謝謝你看。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.