|
▼あおぎんさん、クロ さん:
おはようございます。
> 給付内容Tに[1学期分A額]、[1学期分B額]、[2学期分額]、[3学期分額]、
> [1学期分A支給日]、[1学期分B支給日]、[2学期分支給日]、[3学期分支給日]・・
> というフィールドを作成し
この辺に今回の様な問題が発生する原因があるのかもしれませんね。
あおぎんさんがお作りになっているテーブル構成ですと
どうしてもクエリを使う際に制約ができてしまいます。
今回の場合は項目が増えていく訳ではない
( 4学期、5学期と追加されて行くわけではない)ため
テーブル構成そのものを否定するわけではないのですが、
ご提示の様に「支給日」でデータを抜き出したい場合などは不便ですよね。
以下一案です。
T_給付内容
SEQ 名前 項目 金額 日付
1 Aさん 学期1_A \10,000 2006/04/01
2 Bさん 学期1_A \8,000 2006/04/02
3 Cさん 学期1_A \12,000 2006/04/01
4 Aさん 学期1_B \10,000 2006/06/01
5 Bさん 学期1_B \8,000 2006/06/01
6 Cさん 学期1_B \12,000 2006/06/01
7 Aさん 学期2 \20,000 2006/09/01
8 Bさん 学期2 \16,000 2006/09/01
9 Cさん 学期2 \24,000 2006/09/04
以下をクエリのSQLビューに貼り付けて実行されてみて下さい。
TRANSFORM Max(P.金額) AS 金額の最大
SELECT P.名前
FROM [
SELECT T_給付内容.名前, T_給付内容.項目 & "_金額" AS 集計, T_給付内容.金額
FROM T_給付内容
UNION ALL
SELECT T_給付内容.名前,T_給付内容.項目 & "_日付" AS 集計, T_給付内容.日付
FROM T_給付内容
]. AS P
GROUP BY P.名前
PIVOT P.集計
IN ("学期1_A_金額","学期1_A_日付",
"学期1_B_金額","学期1_B_日付",
"学期2_金額","学期2_日付",
"学期3_金額","学期3_日付");
上記の様なテーブル構成ですクエリでの抽出を行い易くなるのですが、
一覧表などを出す際にはいちいちクロス集計クエリにしなければなりませんので
一長一短だと思います。
クエリで色々とデータを抽出したいのでしたら
こういったテーブル構成を考えてみるのも手かもしれませんね。
※ フィールド名の先頭に半角数字があると、たまに誤作動の元になります。
(不自然な 学期_1 という名前はそのためです。)
ミオナさんという方のサイトが解り易くまとまっていますので
ご参考にされてみてください。
Miona's Square
フィールド、コントロール、オブジェクトや変数などに付ける「名前」について
http://ww3.tiki.ne.jp/~kaya/Ac_tips.html#Tips0_001
|
|