2016-10-23 6 views
0

の範囲私は2つの異なる日付範囲のために、「ブランド」での販売合計を報告してアクセスクロス集計クエリを作成する方法を探しています:アクセスクロス集計クエリ:2つの日付の範囲内の売上合計に基づいては

については
  • 分配: "DistID"(カラム、見えない)
  • 販売合計: "販売"(列)
  • つの異なる日付範囲: "depDate" 期間1及び期間2(列)用:
    • Period1 = Between [forms]![frmRPT_YTDDepl_SF]![BDT1] And [forms]![frmRPT_YTDDepl_SF]![EDT1]
    • Period2 = Between [forms]![frmRPT_YTDDepl_SF]![BDT2] And [forms]![frmRPT_YTDDepl_SF]![EDT2]
  • ブランド= "DprodBrand"(行)

現在、私は正常に動作し、各期間のための2つの別々のクロス集計クエリを持っています。 - >以下のコード。

2つの別々の列または1つのクロス集計クエリで、各日付範囲のブランドの売上合計を表示する1つのクエリを作成する方法を探しています。

周期1:

TRANSFORM Sum(tblDepletions_DETAIL.detQuan) AS Sales 
SELECT tblProducts_DEPL.DprodBrand 
FROM tblDepletions INNER JOIN (tblProducts_DEPL INNER JOIN  tblDepletions_DETAIL ON tblProducts_DEPL.DprodZSKU = tblDepletions_DETAIL.detZSKU) ON tblDepletions.depID = tblDepletions_DETAIL.detDeplID 
WHERE (((tblDepletions.depDate) Between [forms]![frmRPT_YTDDepl_SF]![BDT1]  And [forms]![frmRPT_YTDDepl_SF]![EDT1]) AND ((tblDepletions.depDistID)=132)) 
GROUP BY tblProducts_DEPL.DprodBrand 
ORDER BY tblProducts_DEPL.DprodBrand 
PIVOT Format([depDate],"yy")-(Format(Date(),"yy"))+2 In (1,2); 

周期2:

TRANSFORM Sum(tblDepletions_DETAIL.detQuan) AS Sales 
SELECT tblProducts_DEPL.DprodBrand 
FROM tblDepletions INNER JOIN (tblProducts_DEPL INNER JOIN tblDepletions_DETAIL ON tblProducts_DEPL.DprodZSKU = tblDepletions_DETAIL.detZSKU) ON tblDepletions.depID = tblDepletions_DETAIL.detDeplID 
WHERE (((tblDepletions.depDate) Between [forms]![frmRPT_YTDDepl_SF]![BDT2] And [forms]![frmRPT_YTDDepl_SF]![EDT2]) AND ((tblDepletions.depDistID)=132)) 
GROUP BY tblProducts_DEPL.DprodBrand 
ORDER BY tblProducts_DEPL.DprodBrand 
PIVOT Format([depDate],"yy")-(Format(Date(),"yy"))+2 In (1,2); 

多くの感謝! ~~ヤコブ

+0

あなたのアイデアとコラボレーションありがとうございました!私はこの努力の中であなたの支援と存在を大変感謝しています! ============== ** Dale Fye(アクセスMVP)2016-10-24 ** 私はこのためにCrossTabが必要かどうかわかりません。 '選択DProdBrand、 SUM(IIF([DepDate] BETWEEN [フォーム]![frmRpt_YTDDepl_SF]![BDT1] AND [[フォーム]![frmRPT_YTDDepl_SF]![フォーム]![frmRPT_YTDDepl_SF]![BDT2] と[フォーム]![frmRPT_YTDDepl_SF]![EDT2]、[営業時間]、[営業時間] 、0)Period2、 SUM([Sales]) FROM yourTableから GROUP BY DProdBrand' – ManyCurrents

答えて

0

:デールFYE(アクセスMVP):

は次に、新しいクエリを作成

私はあなたがこのためにクロスタブが必要かわかりません。

Select DProdBrand, 
SUM(IIF([DepDate] BETWEEN [Forms]![frmRpt_YTDDepl_SF]![BDT1] 
AND [[forms]![frmRPT_YTDDepl_SF]![EDT1], [Sales], 0) as Period1, 
SUM(IIF([DepDate] Between [forms]![frmRPT_YTDDepl_SF]![BDT2] 
AND [forms]![frmRPT_YTDDepl_SF]![EDT2], [Sales], 0) as Period2, 
SUM([Sales]) as [Sales Total] 
FROM yourTable 
GROUP BY DProdBrand 

https://www.experts-exchange.com/questions/28978325/Access-Crosstab-Query-based-on-sales-totals-within-TWO-date-ranges.html

0

単にキー結合としてDprodBrandを使用してクエリやテーブルの他のペアのよう2セーブ、クロス集計クエリを結ぶ考えてみましょう:

SELECT CrosstabQ1.DprodBrand, 
     CrosstabQ1.[1] As Period1_Year1, CrosstabQ2.[1] As Period2_Year1, 
     CrosstabQ1.[2] As Period1_Year2, CrosstabQ2.[2] As Period2_Year2 
FROM CrosstabQ1 
INNER JOIN CrosstabQ2 ON CrosstabQ1.DprodBrand = CrosstabQ2.DprodBrand 

を今、あなたは唯一のクエリがそれをしたい場合クロス集計はサブクエリとして使用できないため、条件付き集計ピボット問合せを検討してください。ここでは、WHEREIIF()に条件を移行:

SELECT p.DprodBrand, 
     SUM(IIF((d.depDate BETWEEN [Forms]![frmRPT_YTDDepl_SF]![BDT1] 
           AND [Forms]![frmRPT_YTDDepl_SF]![EDT1]) 
       AND (Format(d.[depDate],"yy")-(Format(Date(),"yy"))+2 = 1), 
       dt.detQuan, NULL)) AS Period1_Year1, 

     SUM(IIF((d.depDate BETWEEN [Forms]![frmRPT_YTDDepl_SF]![BDT2]  
           AND [Forms]![frmRPT_YTDDepl_SF]![EDT2) 
       AND (Format(d.[depDate],"yy")-(Format(Date(),"yy"))+2 = 1), 
       dt.detQuan, NULL)) AS Period2_Year1, 

     SUM(IIF((d.depDate BETWEEN [Forms]![frmRPT_YTDDepl_SF]![BDT1] 
           AND [Forms]![frmRPT_YTDDepl_SF]![EDT1]) 
       AND (Format(d.[depDate],"yy")-(Format(Date(),"yy"))+2 = 2), 
       dt.detQuan, NULL)) AS Period1_Year2, 

     SUM(IIF((d.depDate BETWEEN [Forms]![frmRPT_YTDDepl_SF]![BDT2]  
           AND [Forms]![frmRPT_YTDDepl_SF]![EDT2]) 
       AND (Format(d.[depDate],"yy")-(Format(Date(),"yy"))+2 = 2), 
       dt.detQuan, NULL)) AS Period2_Year2 

FROM tblDepletions d 
INNER JOIN (tblProducts_DEPL p 
INNER JOIN tblDepletions_DETAIL dt 
    ON p.DprodZSKU = dt.detZSKU) 
    ON d.depID = dt.detDeplID 

WHERE ((d.depDistID)=132) 
GROUP BY p.DprodBrand 
ORDER BY p.DprodBrand 
0

これはアクセスであるとして、ORDER BYを残して2つのクエリを保存する方が簡単かもしれません。

SELECT * 
FROM Q1 
UNION ALL 
SELECT * 
FROM Q2 
ORDER BY DprodBrand 
関連する問題