元記事へのコメントで述べたように、私は、SQL ServerとないMS Accessを使用に制限しています。ただし、この例では依然として質問に答える有効な方法が提供されていますが、MS AccessのクエリでUNION文を使用することをお勧めします。
すべてのレコードの下に「合計」行を作成するには、同じSQLを使用して集計クエリを作成する必要があります(集計する列に集計関数を追加する必要があります)。
ここではCASE
ステートメントを使用して、ロジックをクロス集計とピボットの複雑さを増やすことなく少し簡単にしています。このクエリの
SELECT A.Branch
,A.Division
,CASE WHEN A.RequestType = 'Report' THEN 1 ELSE 0 END AS Report
,CASE WHEN A.RequestType = 'Financial Analysis' THEN 1 ELSE 0 END AS FinancialAnalysis
,CASE WHEN A.RequestType = 'Letter' THEN 1 ELSE 0 END AS Letter
,CASE WHEN A.RequestType = 'Research Paper' THEN 1 ELSE 0 END AS ResearchPaper
FROM TableA
UNION
SELECT 'TOTAL'
,NULL
,SUM(CASE WHEN A.RequestType = 'Report' THEN 1 ELSE 0 END) AS Report
,SUM(CASE WHEN A.RequestType = 'Financial Analysis' THEN 1 ELSE 0 END) AS FinancialAnalysis
,SUM(CASE WHEN A.RequestType = 'Letter' THEN 1 ELSE 0 END) AS Letter
,SUM(CASE WHEN A.RequestType = 'Research Paper' THEN 1 ELSE 0 END) AS ResearchPaper
FROM TableA
結果は次のようになります。
Branch Division Report FinancialAnalysis Letter ResearchPaper
ASFA ASFAA 1 0 0 0
ASFA ASFAB 1 0 0 0
ASFA ASFAD 0 0 0 1
ASFB ASFBE 0 0 1 0
ASFC ASFCC 0 1 0 0
TOTAL NULL 2 1 1 1
これを表にすべての列を取ることによって動作します最初のクエリを形成し、それらをもう一度照会するだけでなく、それらを追加します。これにより、最初のクエリに追加される単一の行のみが生成されます。
MS Accessを使用している場合、VBAでこのロジックをコーディングしていない限り、上記で使用したCASE
の文は機能しません。 MSアクセスのSQLコードは、SWITCH
またはの関数を代わりに使用する必要があります。
答えを明かすことなく、私はあなたにヒントを与えます:UNION – EastOfJupiter
私は完全に失われており、髪が出る。私は答えを求めて何時間もグーグルで行ってきました。これもできますか?どのようにあなたは連合の質問に固執し、それはどのように適合しますか? – BobbyJones
はい、できます。 UNIONをここ(Google)で検索してください。これは、2つの異なるクエリ(同じ列*重要*)を使用して動作し、最初のクエリの最後に2番目のクエリを処理します。 – EastOfJupiter