- PR -

Accessのクエリ記述について

1
投稿者投稿内容
yuki
会議室デビュー日: 2007/05/31
投稿数: 2
投稿日時: 2007-05-31 13:25
初歩的なことかもしれないのですが質問させて下さい。
会社毎の毎月の請求金額を集計する以下のようなクエリがあります。

TRANSFORM
  Sum(料金) AS 料金合計
SELECT
  請求年, 会社コード, 会社名, Sum(料金) AS 料金
FROM
  集計明細TBL
WHERE
  請求年=2007
GROUP BY
  会社コード, 会社名, 請求年
PIVOT
  Format(請求月,"#0月") In ("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");

ところがある時点で会社名が変わると、古い会社名と新しい会社名で別々に集計されてしまいます。これを分けずに統合するにはどうしたらいいでしょうか?
GROUP BY句から会社名を外すとSELECT句に会社名を含められませんし…(集計タイミングに関わらず、新しい会社名だけ得られれば結構です。)。

使用しているのはAccess2000です。
上記の件に関してどうかご教授願います。
イシバシ
常連さん
会議室デビュー日: 2007/02/06
投稿数: 20
お住まい・勤務地: 浦安の隣
投稿日時: 2007-05-31 14:33
こんにちは。

>>新しい会社名だけ得られれば結構です
とあるので、旧会社名と新会社名は同じ会社コードでしょうか。

であるならば、提示されたSQL文から会社名を除いて集計し、
結果の会社コードで新会社名を(副問い合わせかなんかで)
取得するのはどうでしょうか
yuki
会議室デビュー日: 2007/05/31
投稿数: 2
投稿日時: 2007-05-31 17:20
イシバシ様

こんにちは。レスありがとうございます。
返信が遅れてすいません(調べてました)。

>>旧会社名と新会社名は同じ会社コードでしょうか。
会社コードは同じで会社名だけ変更となります。

「副問い合わせ」というものの知識がなかったので検索して調べてみました。
大体のことは理解できた(…と思う)のですが、今回のクエリへの適用方法が思いつきませんでした。
…が、副問い合わせを調べている過程で1つ思いつきました。

「集計明細TBL」テーブルとは別に「会社マスタ」テーブルがあり、こちらに会社コードとそれに対する最新の会社名が入っていますので、
イシバシ様の仰るように最初に提示したクエリから会社名を除いたものを「クエリ1」とすると、以下のような「クエリ2」を作成すればよいということでしょうか。

 SELECT
   クエリ1.請求年, ・・・ クエリ1.会社コード,会社マスタ.会社名
 FROM
   クエリ1,会社マスタ
 WHERE
   クエリ1.会社コード=会社マスタ.会社コード


副問い合わせを上手く用いればこれを1つのクエリ(SQL)でできるのでしょうけど…。
ともかく解決の糸口が見えました。
今は環境がないので試せないのですが、帰宅したら試してみます。

ありがとうございました。
忠犬
大ベテラン
会議室デビュー日: 2006/05/01
投稿数: 109
投稿日時: 2007-06-01 07:42
AccessでのSQLのサポート範囲が分かりませんが。。。

以下のSQLを試してみてください。

コード:
SELECT Y.請求年, Y.会社コード, X.会社名, Y.料金
 FROM 会社マスタ AS X
 INNER JOIN
 (SELECT 
    請求年, 会社コード, Sum(料金) AS 料金 
   FROM 集計明細TBL 
   WHERE 請求年=2007 
   GROUP BY 会社コード, 請求年) AS Y
 ON X.会社コード=Y.会社コード

1

スキルアップ/キャリアアップ(JOB@IT)