- ベストアンサー
Accessのサブクエリのデザインビューでの記述方法
- Accessのデザインビューでサブクエリを使用する場合、条件指定部分でエラーが発生することがあります。
- デザインビューの条件指定部分では、サブクエリのSELECTステートメントで複数のフィールドを返すことはできません。
- サブクエリのSELECTステートメントを修正して1つのフィールドだけを指定することで、エラーを解消できます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
サブクエリのお話になりますか。 それとも、以下のような表示にする方法になりますか。 会社 部署 200901経費計 200902経費計 200903経費計 200904経費計 201001経費計 AAA AAA01 30000 30000 40000 BBB AAA01 50000 60000 CCC AAA01 150000 後者だとして、上記の表示にするには、クロス集計を使います。 クエリをSQLビューに変更して、以下を記述します。 TRANSFORM Sum(経費TBL.経費) AS 経費の合計 SELECT 経費TBL.会社, 経費TBL.部署 FROM 経費TBL GROUP BY 経費TBL.会社, 経費TBL.部署 PIVOT 経費TBL.年度 & Format(経費TBL.月,"00") & "経費計"; 記述後デザインビューに変更すると、デザインビューでの書き方がわかると思います。 上記では、データのある年度、月で表示されますが、 > 会社 , 部署 , 200901経費計 , 200902経費計 , … , 201012経費計 より 2009の1月~2010の12月までを表示したい場合は、工夫が必要になります。 上記のクエリに、「クエリ列見出し」を設定する方法があります。 また、以下のような方法もあります。 テーブル2つ追加します。 テーブル「T年度」に「年度」(数値型)に 2009 と 2010 の2レコードを登録しておきます。 テーブル「T月」に「月」(数値型)に 1 ~ 12 の12レコードを登録しておきます。 クロス集計を使うことに変わりはありませんが、SQLビューで記述する内容を以下にします。 TRANSFORM Sum(Q2.経費) AS 経費の合計 SELECT Q1.会社, Q1.部署 FROM (SELECT 会社, 部署, 年度, 月 FROM (SELECT DISTINCT 会社, 部署 FROM 経費TBL) AS T1, T年度, T月) AS Q1 LEFT JOIN 経費TBL AS Q2 ON (Q1.会社=Q2.会社) AND (Q1.部署=Q2.部署) AND (Q1.年度=Q2.年度) AND (Q1.月=Q2.月) GROUP BY Q1.会社, Q1.部署 PIVOT Q1.年度 & Format(Q1.月,"00") & "経費計"; サンプル上では動いているようですが、使える/使えない等自己責任にてお願いします。 (2007でやってみましたが、2003でも動くと思いますが・・・)