2017-01-25 9 views
0

私はこれをちょっと怪しいです。 Stackoverflowにも同様のスレッドがありますが、私は答えを見つけられませんでした。実際に検索ボックスに入れるために探しているものを記述する方法を知ることは実際には難しいです。MS Access 2007のクエリとExcelからの呼び出しのデータのピボット

私はMS Accessデータベースでこのクエリを使用しています。このクエリは、製品と総量によってグループ化されたアイテムを返します。データが格納される方法は、年ごとに分解され、年には月ごとに分解されます(FiscalPeriod 01-12(Jan-Dec))。私はこのような何かを達成することができますので、自分の列にヶ月で引っ張る方法を把握しようとしている

enter image description here

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; 

現時点では、私のクエリは次のようになります

enter image description here

は、私はいくつかのAccessクエリで「ピボットビュー」を試してみましたが、これは私が欲しいものを私に与えていない、と私は、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); 

答えて

0

。これは「クロス集計」の問合せのためのもので、私はこれを自分で解決しました。の合計[AS

TRANSFORM Sum(qry_AllProducts.[Quantity]) AS SumOfQuantity 

SELECT qry_AllProducts [ItemCode]、qry_AllProducts [ItemCodeDesc]、qry_AllProducts [FiscalCalYear]、和(qry_AllProducts [数量]。):。。。ウィザードを実行すると、うまく機能し、このコードを、生産しました数量] からqry_AllProducts GROUP BY qry_AllProducts。[ItemCode]、qry_AllProducts。[ItemCodeDesc]、qry_AllProducts。[FiscalCalYear] PIVOT qry_AllProducts。[FiscalCalPeriod];

ExcelからADODB SQLコマンドを使用してこれを実際にプルすることができないという唯一のトリックです。追加の「Make Table」クエリを作成してクロスタブの結果をポイントし、データベース内の一時テーブル。これは、Excelから照会することができます。どのようにリフレッシュするかを理解する必要がありますが、これは機能します。探してくれてありがとう。

+0

入力いただきありがとうございます。それはSQL Serverにとって素晴らしいようですが、これは残念なことにAccess 2007です。 –

0

当たり前のようにしようとしたデータを想像することで

関連する問題