• ベストアンサー

ACCESS-SQLを教えてください。(2回目です)

以前質問797726で質問し、その内容は解決しました。(以下がその内容です)テーブル名等質問時とは変えてます。 ******************* 「3台の車輌があり、それぞれに仕事をし量を記録、車輌部品交換についても記録。前回の特定の交換内容「AAA交換」の交換日から現在までいくら仕事をしたか、その量の累計を、車輌ごとに知りたい。(量によってAAAを交換するか決める(オイル交換みたいに)」 *T02実績明細* 仕事の記録テーブル 実績コード(主キー) 作業日 開始時間 車輌コード(外部キー) 打設数量 *T_交換記録* メンテ記録テーブル 交換コード(主キー) 交換日 時間 整備交換内容 車輌コード(外部キー) 社員コード(外部キー) 作業日と、交換日は同じ日付になることはほとんどありません。 ********************* 出来たSQL↓ SELECT T.車輌コード, S.整備交換項目, Sum(T.打設数量) AS 累計 FROM T02実績明細 AS T, S WHERE (((T.車輌コード)=[S].[車輌コード]) AND ((T.作業日)>[S].[最新交換日])) GROUP BY T.車輌コード, S.整備交換項目; ※(),[]等はデザインビューから開くと自動でついた。 ※S:SELECT 車輌コード,整備交換項目, Max(交換日) AS 最新交換日 FROM T_交換記録GROUP BY 車輌コード, 整備交換項目; 今日の質問は、以前は問題ではなかった、作業の「開始時間」と、交換の「時間」の関係です。前回の質問の後、「同じ日にメンテをする日もあるからそれも追加して」と言われ困っています。今回追加でやりたいことは、 「同日に同車輌について、作業と交換を行った場合、(1/1 8:30~作業、12:00に交換、13:00~2回目の作業)翌日からの打設数量の累計ではなく、同日交換時間以降の打設数量も含め(2回目の作業の分も)求めたい」です。同じ日も含めるということが思いつきません。VBAも使うのでしょうか?よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.4

>単純に時刻だけは入れられないはずですが。 失礼しました。勘違いしました。 これでしたら、作業日と開始時間を単純に足すだけでOKです。 ただし、&で文字列結合するのではなく、+ で数値として足してください。 交換日と時間も同様です。

ASAHI-yuki
質問者

お礼

早速足してやってみましたところ、バッチリ出ました。なんだか、知らなかっただけでとってもあっけなくできてしまったので、自分の知識の少なさにあきれています。 でも少しずつおもしろくなってきました。いつもどうもありがとうございます。またぶち当たりましたらぜひ教えていただきたいです。ありがとうございました。

その他の回答 (3)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>すべて同じ型で「日付時刻型」 開始時間、時間のフィールドの日付には何が入っていますか? 単純に時刻だけは入れられないはずですが。

ASAHI-yuki
質問者

補足

>単純に時刻だけは入れられないはずですが。 開始時間 8:30 13:00 15:00 と入ってます。交換時間も同様に時刻を入れています。書式を時間(S)として時間が24時間形式で入っています。 時刻だけ入れられないとはどういう意味でしょうか?私の答え方間違ってましたでしょうか? たびたびすいません。よろしくお願いします。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

「作業日」と「開始時間」、「交換日」と「時間」というように、 日付と時刻のフィールドが分かれていますが、 これの型や、入力形式はどうなっているのでしょう?

ASAHI-yuki
質問者

補足

補足します。すべて同じ型で「日付時刻型」です。私も【「作業日」&「開始時間」】【「交換日」&「時間」】と同じフィールドで【2003/12/31 12:00】と表示できれば一番簡単だとは思うのですが、実績明細のテーブルの方の開始時間は別のフィールドにしておきたかったので、作った当初に分けました。 たびたびお世話になります。お願いします。

  • yomo3
  • ベストアンサー率32% (88/269)
回答No.1

こんにちは。 作業日、交換日などのフィールドは日付/時刻型で定義されているでしょうから、そのフィールドに時刻も入れるようにすれば、全く同じSQLでお求めの結果が出ると思いますが……。 そういうことではないですか? 

ASAHI-yuki
質問者

お礼

作業日と開始時間をSQLの中で足してみました。単なる私の知識不足だったようで、求めたい値が出てきました。 お忙しいところ本当にありがとうございました。助かりました。

ASAHI-yuki
質問者

補足

補足します。すべて同じ型で「日付時刻型」です。私も【「作業日」&「開始時間」】【「交換日」&「時間」】と同じフィールドで【2003/12/31 12:00】と表示できれば一番簡単だとは思うのですが、実績明細のテーブルの方の開始時間は別のフィールドにしておきたかったので、作った当初に分けました。 分けたままでは無理でしょうか?よろしくお願いします。

関連するQ&A