- ベストアンサー
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 ]
- ryu8472
- お礼率78% (109/138)
- Visual Basic
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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;
その他の回答 (1)
- o_chi_chi
- ベストアンサー率45% (131/287)
下記でどうでしょう。 (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
お礼
お早い御回答有難うございます。 こんなやり方もあったんですね。 早速試してみます。
関連する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
- ベストアンサー
- SE・インフラ・Webエンジニア
- 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でみると昇順になっている。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- 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 です。
- ベストアンサー
- Microsoft ASP
- ビュー(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
- 締切済み
- Oracle
- 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でもいいのですが?.... どうかよろしくお願いします。
- 締切済み
- その他(Windows)
- 複雑な抽出条件のSQL文
まだまだ初心者ですがよろしくお願いします。 以下の条件でDBからデータを抽出したい場合のSQLを 教えていただきたいです。 ・テーブルAがありカラムがA、Bとある。 ・Aは重複できないようになっているがBは重複可。 ・Bが重複しているレコードのAの値が欲しい。 環境はSQLServer2000+VB6.0です 情報が足りないかも知れませんがよろしくお願いいたします。
- ベストアンサー
- SQL Server
お礼
お早い御回答有難うございます。 早速試してみます。