
アクセスのクロス集計でデータを整理しようとしていますが、うまくいかないのでご教授願います。
テーブルで以下のようなデータを使用しています。
社員番号 社員 転勤年月日 転勤場所
1 A H19.1.1 横浜市
1 A H18.4.1 船橋市
2 B H18.5.1 浦和市
3 C H19.4.1 船橋市
2 B H17.4.1 船橋市
3 C H18.1.1 横浜市
このデータをクロス集計で最新の転勤年月日のみを抽出しようとしたところ、うまくいきません。抽出の条件は、社員番号、社員でグループ化し、転勤年月日を最新にしたところ、転勤場所でも条件を指定しなければならず思うようにいきません。当方としては、転勤年月日と同じ行の転勤場所を抽出したいのです。条件を指定すると、その条件に合ったものが抽出され、転勤年月日と関係のない転勤場所が抽出されてしまいます。
抽出例:Aさんの場合 H19.1.1 横浜市
抽出の仕方をお教えください。よろしくお願いします。
No.2ベストアンサー
- 回答日時:
なぜクロス集計?
記事を読んでも何を列にするつもりなのかが書かれていませんね
単なる抽出クエリでいいんじゃないの
抽出クエリで転勤年月日の抽出条件欄に
In (select max(転勤年月日) from テーブル名 as A where A.社員番号=テーブル名.社員番号)
この回答への補足
回答ありがとうございました。
失礼しました。質問が不十分でわかりづらいかったですね。
回答の抽出条件ですと、テーブル全体の転勤年月日で最新のデータで
抽出されるのですね。
私がつくろうとしている抽出クエリは、以下のとおりです。
社員番号 社員 転勤年月日 転勤場所
1 A H19.1.1 横浜市
2 B H18.5.1 浦和市
3 C H19.4.1 船橋市
各社員番号ごとに最新転勤年月日で抽出したかったのです。
クロス集計は、クエリの集計で、転勤年月日を“最新”の条件で、
社員番号を“グループ化”で集計しようとしたのですが、
転勤場所の抽出条件については、どんな条件で集計すればよいのか
分からなかったのです。
なにぶんアクセス初心者なので、よろしくお願いします。
今、別のデータを作って試しにやってみたら
希望どおりのデータが抽出出来ました!!!
ただ、職場のデータは膨大な量から抽出するものですから、
後でうまくいかなかった原因を検証したいと思います。
失礼な返事をして、申し訳なかったと思います。
本当にありがとうございました。
No.3
- 回答日時:
>回答の抽出条件ですと、テーブル全体の転勤年月日で最新のデータで
>抽出されるのですね。
違います。お望みのものが得られます
>なにぶんアクセス初心者なので、
だったら思い込みだけで判断せず、アドバイスを受けたら一度はやってみなきゃ
で、理由を考える。分からなければ質問する
そうでなきゃ実力はアップしませんよ
失礼な質問だったみたいですね。
気がつかなくて申し訳ございませんでした。
アドバイスのとおりでよかったのですね。
何か足りないところがあったのでしょう。
再度、確認の上、分からないところがあったらまた質問します。
最後に、おっしゃることはもっともですね。
自分で考え、実践しないと実力はアップしません。
ありがとうございました。
No.1
- 回答日時:
クエリの回答は最後に書いております。
ID__社員番号____社員___転勤年月日____転勤場所
1_____________1_________A___2004/01/01___横浜市
2_____________1_________A___2003/04/01___船橋市
3_____________2_________B___2003/05/01___浦和市
4_____________3_________C___2004/04/01___船橋市
5_____________2_________B___2002/04/01___船橋市
6_____________3_________C___2005/01/01___横浜市
<tab2 クエリ>
社員番号__社員___最新転勤年月日__転勤場所
__________1______A____2004/01/01_______横浜市
__________2______B____2003/05/01_______浦和市
__________3______C____2005/01/01_______横浜市
《DBLookup関数で逃げる方式》
SELECT DISTINCT 社員番号,
DBLookup("社員","tab2","社員番号=" & 社員番号) AS 社員,
DBLookup("Max(転勤年月日)","tab2","社員番号=" & 社員番号) AS 最新転勤年月日,
DBLookup("転勤場所","tab2","社員番号=" & 社員番号 & " AND 転勤年月日=#" & 最新転勤年月日 & "#") AS 転勤場所
FROM tab2
ORDER BY 社員番号;
社員番号を DISTINCT で一つだけ抽出し、対応する[社員]、[転勤年月日]、[転勤場所]をDBLookup関数で抽出しています。
Public Function DBLookup(ByVal strField As String, _
ByVal strTable As String, _
Optional ByVal strWhere As String = "", _
Optional ByVal ReturnValue = Null) As Variant
On Error GoTo Err_DBLookup
Dim DataValue
Dim strQuerySQL As String
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
strQuerySQL = "SELECT " & strField & " FROM " & strTable
If Len(strWhere) > 0 Then
strQuerySQL = strQuerySQL & " WHERE " & strWhere
End If
With rst
.Open strQuerySQL, _
CurrentProject.Connection, _
adOpenStatic, _
adLockReadOnly
If Not .BOF Then
.MoveFirst
DataValue = .Fields(0)
End If
End With
Exit_DBLookup:
On Error Resume Next
rst.Close
Set rst = Nothing
DBLookup = Nz(DataValue, ReturnValue)
Exit Function
Err_DBLookup:
MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
"・Err.Description=" & Err.Description & Chr$(13) & _
"・SQL Text=" & strQuerySQL, _
vbExclamation, " 関数エラーメッセージ"
Resume Exit_DBLookup
End Function
《クエリをちゃんと作る方式》
SELECT tab2.社員番号, tab2.社員, tab2.転勤年月日, tab2.転勤場所
FROM
[SELECT 社員番号, MAX(転勤年月日) AS 最新転勤年月日 FROM tab2 GROUP BY 社員番号]. AS tab3
LEFT JOIN tab2
ON (tab3.社員番号=tab2.社員番号) AND (tab3.最新転勤年月日=tab2.転勤年月日);
実行結果は、双方とも同じです。
《DBLookup関数で逃げる方式》と《クエリをちゃんと作る方式》とをどちらを採用するかは好みの問題かと思います。
ただ、前者は誰でも可能、後者はSQL文に対する馴れみたいなものが要求されると思います。
よって、私は、後任スタッフの事を考えて大概が前者で済ましています。
お礼が遅れて大変失礼しました。
アクセス初心者なので、ちょととんちんかな質問もあり
お答えいただきありがとうございました。
大変参考となりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 転職 長く続けられる好条件の求人でしょうか? 3 2023/07/12 18:45
- 就職 田舎住みの人は、雇われでは市役所が最もいいですか? ある程度大きな会社は転勤があると思います。転勤無 2 2023/01/16 22:01
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Excel(エクセル) エクセルの関数を教えてください。② 9 2023/05/25 15:28
- 転職 現在郵便局の契約社員で配達や集荷で3年程勤めています。正社員になりたく転職活動をしております。内定が 5 2023/02/12 01:07
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- 転職 下記のような募集は、良い会社でしょうか?どう思いますか?入ってみたら良くない事が無いでしょうか? 4 2023/03/03 16:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
当方、外科の勤務医です。僕が...
-
大手の金融機関で、全国転勤が...
-
メールのアドレス帳のインポー...
-
旦那が転勤
-
一年で転勤になる仕事とは?
-
大阪の書陵部古市陵墓監区事務...
-
転勤内示段階での拒否の可否
-
都市銀行の転勤時期について
-
質問です! この八月から、北海...
-
母を置いて転勤してもよいので...
-
税務専門官は転勤族ですか?
-
国税専門官の転勤について
-
移動や転勤になる職種ってなに...
-
旦那さんがセコムで働きだしま...
-
新制度導入と名打って・・・
-
高卒で工場勤務の製造業をされ...
-
医者の転勤先はどのようにして...
-
前月、その月が終わる2日前に...
-
郵便局配達員って社員登用試験...
-
転勤を受けない人に促す書類を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
当方、外科の勤務医です。僕が...
-
夫の転勤について行くのが辛い...
-
国家公務員と県庁だったら、ど...
-
質問です! この八月から、北海...
-
税務専門官は転勤族ですか?
-
帯同の意味を調べたら、転勤先...
-
転勤の通知が1週間前に来るって...
-
地方銀行の採用で、転勤を伴う...
-
就職についてです。 社会人の方...
-
郵便局配達員って社員登用試験...
-
母を置いて転勤してもよいので...
-
転職するかを悩んでいます。 職...
-
トヨタカローラの担当のディー...
-
異動したディーラー営業マンに...
-
一年で転勤になる仕事とは?
-
大手の金融機関で、全国転勤が...
-
何故公務員試験はその県の県庁...
-
単身赴任の事で悩んでいます
-
北海道庁職員の移動と勤務地に...
-
面接で離婚の話が出てしまいそ...
おすすめ情報