質問: Nothing end sub ⇒処理は成功するのですが、以下の結果となります logon_master1.csv 日付,起動時間,端末機名,操作種別 2019/2/6,9:41:00,吉田1,継続 2019/2/6,9:23:00,吉田1,終了 2019/2/6,9:18:00,吉田1,開始 2019/2/612:05:00,田中2,開始 2019/2/612:01:00,田中2,終了 2019/2/610:33:00,田中2,継続 ・・・2/8分についても続いて記載される ⇒操作種別ごとに出てしまいます
回答: いろいろSQLとしておかしい部分があります。 vbsではデバッグが難しいので、 Accessなどの実行環境で動作を確認してから、 そのSQLをvbsに変換するといいでしょう。 > > 各日付毎の端末機名単位で、最も早い時刻のレコードのみを抽出し、 > > 「日付」「起動時間」「端末機名」「操作種別」 > > を出力させたい > > > まずは、サブクエリ内のSQLを実行環境(当方はAccess)で確認します。 下記のようになると思います。 ``` SELECT Format(T1.日時,"yyyy/mm/dd") AS 日付, T1.端末機No; Min(T1.日時) AS 最小日時 FROM log_master1 AS T1 GROUP BY Format(T1.日時],"yyyy/mm/dd"), T1.端末機No ``` 提示のSQLだと GROUP BY に Max関数がありますが、それはできません。 あと、最も早い時刻なら、Min関数ですよね。 この集計クエリと元テーブルを結合すると ``` SELECT Format(T2.日時,"yyyy/mm/dd") AS 日付, Format(T2.日時,"hh/nn/ss") AS 起動時刻, T2.端末機名, T2.操作種別 FROM log_master1 AS T2 INNER JOIN ( ここに上記SQL ) AS T3 ON T2.端末機No = T3.端末機No AND T2.日時 = T3.最小時刻; ``` 提示のSQLだと ON句の結合式でテーブル名が省略していますが、それはできません。 上記SQLはAccessで動作確認できました。 これに`INTO`句を挿入したものを、VBS上で SQL文として生成すればOKだと思います。 サブクエリだと複雑になるので、いったんサブクエリのデータをcsvに出力して、 それと元csvを結合するようにするとメンテナンスが楽かもしれまはせん。