2017-07-12 14 views
0

2つの選択年の間のコスト差を分析するクエリがあります。だから私はこのように合計3つのクエリを持っています。クエリの列名をMS Accessのパラメータ値に変更します。


qry_Comp_Year1(クロスタブ)
プロバイダ
コスト
四半期
FinYear = [フォーム] [frm_Comparison] [cmb_comp_year1] 合計:!!費用合計

SQL

PARAMETERS [Forms]![frm_Comparison]![cmb_comp_year1] Text (255); 
TRANSFORM Sum(tbl_comparison_data.Cost) AS SumOfCost 
SELECT tbl_comparison_data.Service, tbl_comparison_data.FinYear, Sum(tbl_comparison_data.cost) AS Total 
FROM tbl_comparison_data 
WHERE (((tbl_comparison_data.FinYear)=[Forms]![frm_Comparison]![cmb_comp_year1])) 
GROUP BY tbl_comparison_data.Service, tbl_comparison_data.FinYear 
PIVOT tbl_comparison_data.Quarter; 

qry_Comp_Year2(クロスタブ)
プロバイダ コスト
四半期
FinYear = [フォーム] [frm_Comparison] [cmb_comp_year2] 合計:!!費用合計

SQL

PARAMETERS [Forms]![frm_Comparison]![cmb_comp_year2] Text (255); 
TRANSFORM Sum(tbl_comparison_data.Cost) AS SumOfCost 
SELECT tbl_comparison_data.Service, tbl_comparison_data.FinYear, Sum(tbl_comparison_data.cost) AS Total 
FROM tbl_comparison_data 
WHERE (((tbl_comparison_data.FinYear)=[Forms]![frm_Comparison]![cmb_comp_year2])) 
GROUP BY tbl_comparison_data.Service, tbl_comparison_data.FinYear 
PIVOT tbl_comparison_data.Quarter; 

クエリ3(CrossTab)
サービス
コストエイムス:qry_Comp_Year1.Total qry_Comp_Year2.Total)
差qry_Comp_Year2.Total - qry_Comp_Year1.Total

SQL

SELECT qry_Comp_Providers.Service, qry_Comp_Year1.Total, qry_Comp_Year2.Total, nz([qry_Comp_Year2.Total])-nz([qry_Comp_Year1.Total]) AS Difference 
FROM qry_Comp_Year2 RIGHT JOIN (qry_Comp_Year1 RIGHT JOIN qry_Comp_Providers ON qry_Comp_Year1.Service = qry_Comp_Providers.Service) ON qry_Comp_Year2.Service = qry_Comp_Providers.Service; 

OUTPUT

Service qry_Comp_Year1.Total qry_Comp_Year2.Total Difference 
Clean 225        340    115 
Service 678        374    -304 
Update 400        410    10 

サンプルデータ

ID Service Cost Quarter FinYear 
1 Clean 100  Q1 2015-16 
2 Update 250  Q2 2015-16 
3 Update 150  Q1 2015-16 
4 Clean 125  Q3 2015-16 
5 Service 178  Q4 2015-16 
6 Service 500  Q2 2015-16 
7 Clean 175  Q1 2016-17 
8 Update 225  Q2 2016-17 
9 Update 185  Q1 2016-17 
10 Clean 165  Q3 2016-17 
11 Service 187  Q4 2016-17 
12 Service 187  Q2 2016-17 

しかし、クエリ3を見ると、コストの列には年を列見出しにしたいので、どの年が選択されているかはわかります。これは可能ですか?

+2

質問を編集してSQL文とサンプルソースデータを提供してください。 – June7

+0

@ June7そうしました。 – Naz

答えて

1

最終出力では四半期ごとのデータは使用されないため、1つのCROSSTABは年の合計を列ヘッダーとして返すことができます。しかし、これは列ヘッダー名が動的であることを意味し、CROSSTABをソースとして安定したクエリまたはレポートを作成して差異を計算することは実際的ではありません。

だから、私はCROSSTAB列ヘッダーで年を取る実際的な方法は見当たりませんが、本当に必要はありません。 Query3に基づいてレポートを作成し、フォームが制御するレポート参照に2つのテキストボックスを表示することをお勧めします。

関連する問題