• ベストアンサー

VB6でのSQLでの抽出をお願いします

DAY_____________TIME________ANS1_____ANS2_____ANS3_____ANS4 2009/01/16____20:27:00____90.58____90.59____90.58____90.59 2009/01/16____20:28:00____90.59____90.64____90.59____90.63 2009/01/16____20:29:00____90.63____90.64____90.62____90.62 2009/01/16____20:30:00____90.62____90.67____90.61____90.65 2009/01/16____20:31:00____90.65____90.68____90.64____90.67 2009/01/16____20:32:00____90.67____90.69____90.66____90.67 2009/01/16____20:33:00____90.67____90.68____90.65____90.67 2009/01/16____20:34:00____90.67____90.69____90.66____90.68 上記データは ドル円の価格 の 2007/01/01 から 2009/01/20 迄の一部抜粋 項目は  DAY , TIME , ANS1-4 アクセス97を使用でインデックスなし このデータを [ 2008/09/01 06:00:00 ] から [ 2008/09/03 07:00:00 ] 迄を下記 A,B,C の順のように、 [ DAY TIME ] 共に 昇順 になるように、全項目を抽出したいです。  この場合の VB6 でのSQL文を御教授願います。 A [ 2008/09/01____06:00:00 ] から [ 2008/09/01____23:59:00 ] B [ 2008/09/02____00:00:00 ] から [ 2008/09/02____23:59:00 ] C [ 2008/09/03____00:00:00 ] から [ 2008/09/03____07:00:00 ]

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

  • ベストアンサー
  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.1

DAYおよびTIMEが文字列方の場合 SELECT * FROM テーブル1 WHERE (((テーブル1.DAY) Between '2008/09/01' And '2008/09/03') AND ((テーブル1.TIME) Between '06:00:00' And '23:59:00')) ORDER BY テーブル1.DAY, テーブル1.TIME; DAyおよびTIMEが日付/時刻型の場合 SELECT テーブル2.* FROM テーブル2 WHERE (((テーブル2.DAY) Between #9/1/2008# And #9/3/2008#) AND ((テーブル2.TIME) Between #12/30/1899 6:0:0# And #12/30/1899 23:59:0#)) ORDER BY テーブル2.DAY, テーブル2.TIME;

ryu8472
質問者

お礼

 お早い御回答有難うございます。  早速試してみます。  

その他の回答 (1)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

下記でどうでしょう。 (1)まずDAY,TIME,ANSの値(1~4を分ける)をもつクエリを作ります。 (2)その4つのクエリでユニオンクエリを作ります。 (3)そのユニオンクエリでクロス集計クエリを作ります。 -- SELECT T.DAY, T.TIME & "-1" AS T, T.ANS1 AS A FROM T_MAST T SELECT T.DAY, T.TIME & "-2" AS T, T.ANS2 AS A FROM T_MAST T SELECT T.DAY, T.TIME & "-3" AS T, T.ANS3 AS A FROM T_MAST T SELECT T.DAY, T.TIME & "-4" AS T, T.ANS4 AS A FROM T_MAST T これをQ_1~Q_4とする SELECT DAY,T,A FROM Q_1 UNION SELECT DAY,T,A FROM Q_2 UNION ELECT DAY,T,A FROM Q_3 UNION SELECT DAY,T,A FROM Q_4 これをQ_ALLとする。 TRANSFORM First(Q_ALL.A) AS ANS SELECT Q_ALL.DAY FROM Q_ALL GROUP BY Q_ALL.DAY PIVOT Q_ALL.T

ryu8472
質問者

お礼

 お早い御回答有難うございます。  こんなやり方もあったんですね。  早速試してみます。

関連するQ&A

  • データ抽出SQLについて

    以下の様なテーブル内容のデータがあり、抽出条件:項目Aが同一でかつ、その項目Aに対する項目Bの値がひとつでも異なっている項目Aを抽出するSQLについて教えてもらえないでしょうか。よろしく御願い致します。 <データの内容> 項目A 項目B 0001 A 0001 A 0002 A 0002 B 0003 C 0003 A 0003 A 0004 B 0004 B 0004 B 0004 B <抽出結果> 0002 0003

  • SQL の抽出方法

    あるテーブルABC に項目aとbとc があるとします。 今、抽出の条件が 仮にa=1,b=2 として、 この条件で複数件のデータが抽出され その中からcが最大のデータ1件のみを抽出するとします。 このSQLを作成する場合、 どのような方法がありますでしょうか? select文で、1度cのmax値を求めないといけないでしょうか?

  • VB SQL文について

    VB6.0(SP5) XP SQL Sever7.0を使用しています。 テーブルからSQLより以下の条件で抽出しようとしています がいいSQL文が浮かびません。 TableA ----------------------- | sDate | nNumber | ----------------------- | 20030301 | 200 | | 20030301 | 250 | | 20030302 | 220 | | 20030302 | 225 | | 20030303 | 230 | ----------------------- 上記の内容で、一度読み込んで、内部テーブルに格納 したとします。TableAにデータ6、7が追加後に再度、 TableAを読んだときにデータ6、7だけ抽出したいのです が、いい方法ありますか? TableA ----------------------- | sDate | nNumber | ----------------------- | 20030301 | 200 | 1 | 20030301 | 250 | 2 | 20030302 | 220 | 3 | 20030302 | 225 | 4 | 20030303 | 230 | 5 | 20030303 | 240 | 6  ← 抽出したいデータ | 20030304 | 100 | 7  ← 抽出したいデータ ----------------------- ルール sDate :重複することあるが昇順になっている。 nNumber:sDateをキーにすると重複しない。 sDate+nNumberでみると昇順になっている。 よろしくお願いします。

  • SQL文 特定のレコードを抽出したい

    以下のようなテーブルAがあったとします。 年月日,項目B ---------------------- 20080101 100 20080102 100 20080103 200 20080104 400 20080105 400 20080106 200 SQL文にて、データの抽出を行いたいのですが、 抽出したいのは、データに変更があった年月日と項目Bの値です。 年月日,項目B ---------------------- 20080101 100 20080103 200 20080104 400 20080106 200 前の年月日と比較し、項目Bに違いがあった場合のデータだけ抽出したいのですが、SQL文で行うことは可能でしょうか?? 環境は、SQL Server 2005 です。

  • ビュー(view)のSQL

    SQL初心者で困っております。 どのようなSQLを作成すれば良いか ご助言頂ける方がいらっしゃいましたら よろしくお願いいたします。 テーブルにイメージは以下通りです。 項目1,日付,月,項目2,項目3 1234 ,6/2 ,6 ,A ,1 1234 ,6/4 ,6 ,A ,2 1234 ,6/5 ,6 ,A ,3 1234 ,6/6 ,6 ,B ,1 1234 ,6/6 ,6 ,B ,2 1234 ,6/6 ,6 ,B ,3 1234 ,7/2 ,7 ,A ,1 1234 ,7/4 ,7 ,A ,2 主キーは、項目1,日付です。 ビューで項目1,月をグループ化して、 項目2の昇順のトップ その中で項目3の昇順のトップ のレコードを抽出したいと思います。 結果が以下のようなイメージです。 1234,6,A,1 1234,7,A,1

  • SQLについての質問

    SQLについて質問があります。 以下のようなデータがあったとします。 項目1 項目2 項目3 項目4 ----------------------------   1   A   300   1   2   A   400   1   3   A   300   0   4   B   200   1   5   B   200   1   6   B   100   0   7   C   200   0   8   C   300   0   9   C   600   1 ここから「項目4 = 1」のレコードを「項目2」で集約し 「項目3」のサマリを求めると 項目2 項目3  --------------   A   700     B   400     C   600   となりここからさらに「項目3 >= 500」となる、 元のレコードを抽出したいのですが このような複雑な処理を1度のSQL可能なのでしょうか? ご存知の方がいらっしゃいましたら、よろしくお願いいたします。 ・期待する結果 項目1 項目2 項目3 項目4 ----------------------------   1   A   300   1   2   A   400   1   9   C   600   1

  • SQL文でデータを抽出できない。

    現行のSQL文でACCESSからデータを抽出してきていたのですが、それでは問題が起きてしまったので、以下の内容にSQLを変更したいのですが、思うようにできません。 詳しい方がいましたらご教授願います。 お手数ですが、困っているのでよろしくお願いいたします。 *現行のSQL* 日付が最も若いものでかつ、IDとSUBJECTに重複のない データを抽出する。 "SELECT .sID,B.subject,B.D_time FROM (SELECT sID,Min(D_time) AS mtime ,subject FROM Reg1Data GROUP BY sID,subject) A INNER JOIN Reg1Data B ON A.sID=B.sID AND A.mtime=B.D_time GROUP BY B.sID,B.subject,B.D_time ORDER BY B.sID,B.subject;" *変更したいSQL* ある範囲の日付の中で(日付は、入力画面から抽出)日付が最も若いものでかつ、IDとSUBJECTに重複のないデータを抽出する。 "SELECT .sID,B.subject,B.D_time FROM (SELECT sID,Min(D_time) AS mtime ,subject FROM Reg1Data WHERE D_time <= & w_jyukobistart GROUP BY sID,subject) A INNER JOIN Reg1Data B ON A.sID=B.sID AND A.mtime=B.D_time GROUP BY B.sID,B.subject,B.D_time ORDER BY B.sID,B.subject;" 以上を実行すると、 [Microsoft][ODBC Microsoft Access Driver] クエリ式 'D_time <= & w_jyukobistart' の 構文エラー : 演算子がありません。 というエラーが出ます。 ちなみにw_jyukobistart はWEBの画面上に入力された抽出したいデータ範囲(from)です。 この変数の使い方に問題があるのか、それともSQL文自体に無理があるのか、最も良い方法をお尻の技術者の方、お答えいただけるとうれしいです。

  • 3テーブルより抽出のSQL文

    3テーブルよりを以下の条件で1つのSELECT文で抽出したいのですが可能でしょうか?  ・C_TBLのDATEが2007のデータ〔SUBSTR(DATE,1,4)='2007'を使用?〕  ・A_TBLのCORPがcorp1のデータ(あいまい検索)  ・CORP(昇順)、DATE(降順)、ITEM(昇順)でソート ・表示カラムは、CORP・DATE・ITEM・SURYO・TANKAです <<A_TBL>>   <<B_TBL>>         <<C_TBL>> A  CORP    B  A  ITEM TANKA   C  A  B   DATE  SURYO a01 corp11   b01 a02 item03 10   c01 a03 b06 2007-11-01 100 a02 corp13   b02 a03 item01 20   c02 a01 b03 2007-12-01 200 a03 corp11   b03 a01 item03 10   c03 a05 b04 2007-11-01 100 a04 corp05   b04 a05 item02 30   c04 a01 b05 2007-11-01 300 a05 corp13   b05 a01 item02 30   c05 a03 b06 2007-12-01 200            b06 a03 item03 20   c06 a01 b05 2007-11-02 100            b07 a01 item01 10   c07 a03 b02 2007-11-01 500 また、以下の条件で集計を1つのSELECT文で行えますか? 現在は、C_TBLとB_TBLで集計抽出し、A_TBLの対象データを抽出し、2つの配列より・・・ というロジックを組んでいます。  ・C_TBLのDATEが2007のデータ〔SUBSTR(DATE,1,4)='2007'を使用?〕  ・A_TBLのCORPがcorp1のデータ(あいまい検索)  ・CORP(昇順)、DATE(降順)でソート ※DATEは年月のみです  ・CORP、DATE(年月)毎で金額を集計〔SUM(C_TBL.SURYO*B_TBL.TANKA) AS KINGAKU〕 ・表示カラムは、CORP・DATE・金額です 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • SQL 重複データの抽出

    こんにちは SQLで教えてください 今 会員番号ごとの重複データがあります 例  会員番号 日付    金額 住所 その他1 その他2     1 2001/01/01  120 XXXX YYYYY  UUUUUU     1 2001/12/01  130 XXX YYYYY IIIII ⇒ 2 2001/08/12 50 pppp iiiii ooooo 3 2003/01/06 60 iiiii iiii uuuuu ⇒ 3 2002/03/18 10 22222 eeeee nnnnn 3 2001/08/19 500 ddddd rrrrr rrrrr 上記の様なデータで会員番号ごとで日付の最大のレコード(同一日なら入力順に最初)のレコードを抽出したいのですが distinctを使うと会員番号と日付のデータしか抽出されませんので その他の項目も抽出したいのですが... SQLでできなければ VB2005でもいいのですが?....   どうかよろしくお願いします。

  • 複雑な抽出条件のSQL文

    まだまだ初心者ですがよろしくお願いします。 以下の条件でDBからデータを抽出したい場合のSQLを 教えていただきたいです。 ・テーブルAがありカラムがA、Bとある。 ・Aは重複できないようになっているがBは重複可。 ・Bが重複しているレコードのAの値が欲しい。 環境はSQLServer2000+VB6.0です 情報が足りないかも知れませんがよろしくお願いいたします。

専門家に質問してみよう