こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

SQLServerからエクセルにデータを抽出する方法

お世話になります。
会社でSQLServerを使っており、その中から必要なデータのみエクセルで取り出そうと考えていますがどうもうまくいきません。
日付(datetime型)を含むデータの中から今日の分のデータだけピボットテーブルでエクセルに取り出す場合、MSクエリを使って抽出するときの方法を教えてください。(getdate()を使ってみましたが”getdateは組み込み関数名として認識されません”とエラーが出ます。
よろしくお願いします。

投稿日時 - 2008-08-08 07:05:56

QNo.4236260

困ってます

このQ&Aは役に立ちましたか?

8人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

他で使うときに、ODBCのデータソース選択画面で「クエリウィザードを使ってクエリを作成/編集する」というチェックをオフにすると、いきなりMS Queryに飛ぶからエラーにはならないはずです。

クエリウィザードはODBC(というかMicrosoft OLE DB Provider)が書式を評価するので、ODBC書式({ts 'yyyy-mm-dd 00:00:00'})しかサポートしてくれていないということかと思います。
GETDATEに限らず、SQL Server独自の関数はつかえないです。
ここはどうしようもないところで、クエリウィザード以外のところで対応するように考えていくべきかと。

投稿日時 - 2008-08-08 14:22:18

お礼

エラーは出なくなったのでこれでやってみたいと思います。

>ここはどうしようもないところで、クエリウィザード以外のところで対応するように考えていくべきかと。
勉強してみます。
どうもありがとうございました。

投稿日時 - 2008-08-08 19:16:44

ANo.2

MS Queryのクエリウィザードの抽出条件指定画面ではGETDATE()はつかえませんが、ウィザードの最後で「データの表示またはクエリの編集を行う」を選び、MS Queryの画面を開けば、そこではGETDATE()は使えます。以下のいずれかの方法で。
1)抽出条件フィールドの「値」に登録する
2)SQLボタンを押して、生成されているSQL文の末尾にWHERE条件を追加する

なお、GETDATE()は時刻を持っているので、指定するときは以下のようにしてください。
CONVERT(datetime,CONVERT(varchar,GETDATE(),111))

投稿日時 - 2008-08-08 10:17:45

補足

ありがとうございます、できました
ただクエリを保存して別で使うとやっぱりエラーが出るので、日付の指定はせずに保存して使うときに指定してやることにします。
ウィザードではできずにクエリ編集ではできるというのはなにか不便な気もしますが他にもこのようなことがあるのでしょうか?
今後使っていく上で参考のために教えてください。

投稿日時 - 2008-08-08 12:41:10

ANo.1

EXCEL2007の場合、「データ」タブの「その他のデータソース」で「SQL SERVER」を選択すれば、ピボットテーブルレポートでEXCELにデータをインポートできます。


EXCEL2003以前の場合、「データ」メニューの「ピボットテーブルとピボットグラフ レポート」を選択し、表示される「ピボットテーブル・ウィザード 1/3」で、「外部のデータベース」を選択し、データのある場所を指定すれば、MSクエリウィザードが起動します。そこでデータを抽出します。
そして、抽出したデータでピボットテーブルを作成し、最後に今日の日付でデータを絞り込みます。

投稿日時 - 2008-08-08 07:30:06

お礼

ご回答ありがとうございます。最近勉強し始めたのですが、何とかそこまではできました、ただ毎回今日の日付で絞り込むのも面倒で今後データも増えるので勝手に今日の分だけ取り出せないかなと考えていました。

投稿日時 - 2008-08-08 12:28:03

あなたにオススメの質問