• 締切済み

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

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

みんなの回答

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.3

他で使うときに、ODBCのデータソース選択画面で「クエリウィザードを使ってクエリを作成/編集する」というチェックをオフにすると、いきなりMS Queryに飛ぶからエラーにはならないはずです。 クエリウィザードはODBC(というかMicrosoft OLE DB Provider)が書式を評価するので、ODBC書式({ts 'yyyy-mm-dd 00:00:00'})しかサポートしてくれていないということかと思います。 GETDATEに限らず、SQL Server独自の関数はつかえないです。 ここはどうしようもないところで、クエリウィザード以外のところで対応するように考えていくべきかと。

nyaokin
質問者

お礼

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

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

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

nyaokin
質問者

補足

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

  • dghjty145
  • ベストアンサー率46% (42/90)
回答No.1

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

nyaokin
質問者

お礼

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

関連するQ&A

  • アクセス2010 最新データを抽出する方法

    はじめまして。 アクセスを猛勉強中の初心者です。 過去記事を探しましたが、解決できませんでしたのでご教示お願いします。 やりたいことは、2つのテーブルからクエリを使って、最新のデータを抽出したいです。 ですが、その中に抽出したくないワードが存在します。 それ以外のワードで最新のデータを抽出したいです。 まず、下記のような2つのテーブルがあります。 ●テーブル1        ・ID(主キー)       ・日付 ・コメント ・顧客ID ●テーブル2 ・顧客ID(主キー) ・顧客名 ・住所 次にこのテーブルをクエリにしてデータを返すと、下記のようになります。 日付    コメント      顧客名    ・2/1     保留       Aさん ・2/1     発送       Bさん       ・2/1     相談       Cさん ・2/2    次回未定     Bさん ・2/3     発送       Aさん  ・2/4    次回未定     Dさん        今回抽出したいデータは、「発送」というワードをはぶいた最新のデータをとりたいということです。 なので、データとしては、 日付    コメント      顧客名    ・2/1     保留       Aさん ・2/1     相談       Cさん ・2/2    次回未定     Bさん ・2/4    次回未定     Dさん と、このように抽出したいのです。 最新データの抽出にはMax関数を使ってでき、いらないワードである「発送」はクエリのフィールドの抽出条件に『<>”発送”』と入力することで抽出を防ぐことができたのですが、これらの方法でMax関数を入れて最新データの抽出をしようとすると、全ての「発送」を除いたデータが抽出されるので、最新データに該当する顧客のデータが消えてしまいます。 なので、本来のコメントデータが分からない状態になります。 また、エクセル側でパラメータクエリを使って資料を作成し、アクセスに触ったことがない人たちが使用するので、アクセスを更新してといったことができません。 なので、更新クエリなどを使ってのやり方以外の方法はないでしょうか? 全くの初心者ですので、言葉足らずで説明が分かり辛くて申し訳ありません。 ご教示をお願いいたします。

  • PHPとSQLServerにて

    おはようございます。 質問させてください。 今PHPでSQLServerのデータを抽出してWEBで表示するアプリを作成しています。 SQLServerに格納されている本番テーブル(honban_tbl)はかなりのレコードが 格納されていて、テストテーブル(test_tbl)には本番テーブルの 約50分の1の大きさにしてあります。 参照先をtest_tblにすると問題なくデータを表示するのですが、 honban_tblにするとかならずエラーになります。 -------エラー内容---------- MS SQL: Query failed in d:\test\・・・ -------------------------- この原因は (1)honban_tblが大きすぎる (2)honban_tbl内のデータに壊れているものがある (3)スクリプトに問題がある (4)処理時間に問題がある 上記の理由がかんがえられるのですが、 それ以外にもなにかご存知の方いらっしゃいましたら、 宜しくお願いいたします。m(_ _)m

    • 締切済み
    • PHP
  • EXCELから効率よくデータ抽出したい

    EXCELのデータが20万行あります。 この中から、データを抽出したいのです。1個なら検索で良いかと思うのですが、20個とか30個とかの場合は、どうすれば効率が良いのでしょうか? 今やっているのは、こんな感じです。 EXCELの20万行のデータを(1)とします。 抽出したいデータを(2)とします。 (1)には重複不可のキーとなるIDがあります。(2)には調べたいIDが入っています。 (1)のとなりに(2)を貼り付け、IDを頼りに(1)から(2)のデータをvlookupします。 そこで#n/aとならなかったデータが対象・・・としています。 ただ、(2)のデータが全て(1)に含まれているわけではなく、含まれていないものは他のテーブルから抽出します。((1)のテーブルは20個ほどあります) そのため、今度は(2)のIDをキーにvlookupをして、(1)から抽出されなかったデータを絞っています。 また、(2)に入っているIDに無駄な空白があったり・・・とデータの整形もあります。 現在、データが重い上にかなり手間がかかっています。ACCESSのクエリーを使えば早いのでしょうが、EXCELのデータで各カラムにいろいろなデータが入っているために(フィールドが整理されていない)カンタンに移行できそうもありません。 やっぱり、ここは何とかAccessへ移行させるべきでしょうか? 20万行のファイルを20個1つのAccessにすればやはり重くなりますでしょうか? すみません。よろしくお願いします。

  • データの抽出について

    エクセルの関数について質問します。 あるデータから特定の文字を含む行などを抽出する場合、通常オートフィルター機能を使いますが、これを関数で抽出することはできますでしょうか? 日付が入っているデータ(200行くらい)からある特定の日付で、さらに特定の文字を含まれているものを抽出し利用したいと考えています。 AND関数を使った場合、特定のセルで指定(たとえばB2='2007/3/1'、C2='ある特定の文字')はできるのですが、B2:B100の中から='2007/3/1'でなおかつ、C2:C100='ある特定の文字'といった絞り込みができずに苦戦しています。 よろしくお願いいたします。

  • Excel 2007で日付フィールドへの変換方法

    Excel 2007を使用しています。Excelフォームで提供された資料で数千レコードの資料があります。その内の一つのデータフィールドが“01/02/2008 01:28 AM”のような形式で入力されていますが、日付フィールドとしてExcelが認識してくれないため月ごと(或いは四半期ごと)のピボット・テーブルにまとめられないため困っています。“01/02/2008 01:28 AM”の書式を何とかうまく変換し“ 2008/01/02”のようなExcelが日付として認識でき、結果としてピボット・テーブルに月ごとのデータにまとめられる方法を教えて頂ければ幸いです。

  • ACCESSのデータをEXCELに・・・

    Access97を使用しています。 ほぼ初心者に近いです。 会社で請求書のシステムを作成中です。 パラメータクエリを使用して例えば始まり「02/10/15」終り「02/12/15」と入力すればその期間の請求書データを抽出できるようになっています。 テーブルを増やしたくないのでそのパラメータクエリを使用して抽出したデータをExcelにエクスポートしたいのですが・・・いろいろ調べてみましたがわかりません。(モジュールに関数を作って、フォーム上でコマンドボタンを作成しそれをクリックすれば関数が動いてエクスポートと同時にExcelのファイルが出来上がるようにしたくて試みているのですが。) VBAでもかまいませんので出来る方法がありましたら教えてください。 よろしくお願いします。

  • VBA 抽出条件でデータ型が一致しません

    Access 2003について教えて下さい。環境はWin XPです。 Table1 ID(メモ型),日付(日付/時刻型 書式 日付(S)) 001,2012/08/10 002,2012/08/10 Form1 フォームにはテキストボックス、 txt_Dateがあります。 書式は日付(S)です。 ここには、yyyy/mm/ddの形式で値を打ち込む、またはカレンダーから選択します。 同じくボタン、btn_exeがあります。 これをクリックすると処理がはじまります。 Dim getDate As Date Dim strSQL As String Dim objADOCON As ADODB.Connection Dim objADORS As ADODB.Recordset getDate = txt_Date.Value strSQL = "select * from Table1 where 日付 = '" & getDate & "'" objADORS.Open strSQL, objADOCON, adOpenKeyset, adLockOptimistic 質問1. where 日付 = '" & getDate & "'" でやると下記のメッセージが表示されます。 抽出条件でデータ型が一致しません where 日付 = " & getDate でやると、エラーメッセージは起こりません。 何故このようなメッセージが表示されるのでしょうか? 質問2. Table1には2012/08/10というデータが日付フィールドに存在します。 where 日付 = " & getDate ではエラーメッセージが出ないので、 次のレコードセット取得時、レコード取得件数が0件です。 条件文が上手くいっていないような気がします。なぜでしょうか? ちなみに、 strSQL = "select * from Table1 では問題なくレコードセットを取得できています。 宜しくお願いします。

  • データ抽出

    アクセス2003でデータ抽出をしたいと考えています。 クエリ上の複数のフィールドに同じ日付でフィルターをかけて抽出したいです。 例えば、AフィールドとBフィールドとCフィールドに2009/6/22をフィルターをかけてこの日付ににあてはまったものを抽出したいと思っています。(どのフィールドも同じ日付です) そして、抽出したデータをレポートにして、印刷したいです。 やり方はできれば、簡単なやり方があれば一番良いのですが、もしなければVBAの構文を教えて頂ければ幸いです。 よろしくお願いします。

  • エクセル データの抽出について教えてください。

    エクセルのデータの抽出について教えてください。 大量のデータ(数字のコード)がランダムに縦に並んでいるのを、並び替えで日付順にしたのですが。 重複しているのがとても多く重複しているのは日付が早いのだけを取り出したいのですが。なにかよい方法はないでしょうか? 重複しているのに(重複していらないのに)標しでわかりやすくしてあとでフィルタで抽出して削除でもしようかと思うのですが。 標しがつけれるようなやりかたおしえてください。 

  • ACCESS クエリー 抽出条件が多い場合

    アクセス初心者です。(2003です) 商品コードのテーブルから、 32個のキーワードを含むものを抽出したいです。 商品コードの中のキーワードの位置は 先頭や最後など決まりはなく、バラバラです。 クエリの抽出条件の欄が9個しかないので、 9個ずつバラバラにクエリを作ってみました。 *02S* *05F* ... ... というふうに条件を並べています。 この3つのクエリ結果を エクセルに出してはっつけて1枚のマスターに しようかと思っていますが… かなり手作り感があふれていて…(^^;)汗汗 もうちょっと単純な方法はないでしょうか? また、なんだか心配なので エクセルでテーブルをフィルタにかけ キーワードを一個ずつ抽出してみましたが アクセスで出た結果と違います…。(エクセルのが少ないです) 重複するキーワードがあるからかと思い ピボットで見ても、重複は4件しかありません。 クエリを分けているからでしょうか? どっちが正しいのでしょうか? 自分の作ったデータにまったく信頼が持てません。。。(--;) これを出さないと退社できないのですが チーム内に誰もいないので困っております。 助っ人お願い致しますm(__)m