SQLiteをAccessから使う
SQLite ODBC Driverを使って、Access 2007からSQLite3を使っている。珍しいかも知れないが、色々考慮した末こんなことになった。
で、以下のクロス集計クエリを実行してみて、どうにもおかしいので詰まった。
TRANSFORM Sum(nantara.jikan) AS jikanの合計
SELECT kantara.kantara_name
FROM kantara INNER JOIN nantara ON kantara.kantara_code = nantara.kantara_code
GROUP BY kantara.kantara_name
PIVOT nantara.hiduke;
jikanとhidukeはDATETIME型。結果、値の時間がすべて整数になる。上のSQLは試験のため取ってあるが、実際はFormatで時刻書式にするので、これだと全部00:00になってしまう。
しかし、
TRANSFORM Sum(nantara.jikan) AS jikanの合計
SELECT kantara.kantara_name
FROM kantara INNER JOIN nantara ON kantara.kantara_code = nantara.kantara_code
WHERE Year([nantara]![hiduke])=2009
GROUP BY kantara.kantara_name
PIVOT nantara.hiduke;
これだとOK。
違いはWHEREが入っているかどうかなのだが、例えばkantara_codeを条件にしても同様に整数になってしまう。とりあえずhidukeを条件にすると小数になってくれるようだ。
Access純正データベースにテーブルを、「テーブル構造とデータ」としてコピーしてみて、上記の二つのクエリを実行したら、どちらも大丈夫だった。
SQLite ODBC Driverが0.80なのに気付いて、最新版の0.83にしてみたが、状況は変わらなかった。
条件を付けたら使えるとはいえ、やはり不安。何か間違っているだろうか。