簡體   English   中英

MS Access 2007 在查詢和從 Excel 調用中透視數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM