SELECT文でデータを抽出する方法

このQ&Aのポイント
  • SELECT文を使用してデータを抽出する際、特定の条件に基づいて抽出することができます。
  • 例えば、上記のコードでは「日本」に関連する「拠点」のデータを抽出していますが、他の条件に基づいてもデータを抽出することができます。
  • 「a」の値を変えることで、抽出する地域を切り替えることができます。
回答を見る
  • ベストアンサー

SELECT文

strSQL = "SELECT * FROM 拠点 WHERE (削除<>'2' or 削除 is NULL) and エリアID like '日本%' ORDER BY 並び順" rsDB.open strSQL,conDB,3,3 a=1 s=0 do until rsDB.eof s=s+1 T(a,s)=rsDB.fields("名称").value TJ(a,s)=rsDB.fields("住所").value rsDB.movenext loop 上記で、日本だけではなく、いくつかSELECT文で抽出したいのですが、 a=1 日本 a=2 北海道 a=3 東北 a=4 関東 a=5 関西 のように、SELECT文で、抽出したものを、置換えしたいのですが、 どのように書いたらいいですか?

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

DBエンジンが何か分からないので、何ともい言えませんが、Decode文、 Case When 文などをSQL内に仕込んでおけば良いのでは? もし、1:日本、2:北海道、・・・のようなマスタがあるなら、JOIN句で 結合させて名前を抽出します。

emiemizou
質問者

お礼

ありがとうございます。 もう少し、調べてみます。

関連するQ&A

  • Excel VBA EOFに関して

    テキストボックスにDateを入力し、SQLServerに接続しSelectの結果をシートに書き込むだけのものなのですが、「BOFとEOFのいずれかがTrueになっているか、または現在のレコードが削除されています」というエラーでさっぱりわかりません。どなたかアドバイスをお願い致します。 -前後省略- stdate = UserForm1.stdate.Value endate = UserForm1.endate.Value strsql = "select ***" strsql = strsql & "from ***" strsql = strsql & "where *** and ***.start_date between '" & stdate & "' and '" & endate & "' " con.Open connectionString Set rs = con.Execute(strsql) Sheets("Data1").Select rs.MoveFirst i = 2 Do Until rs.EOF Cells(i, 1) = rs.Fields(0).Value Cells(i, 2) = rs.Fields(1).Value Cells(i, 3) = rs.Fields(2).Value Cells(i, 4) = rs.Fields(3).Value i = i + 1 rs.MoveNext Loop con.Close Set con = Nothing Exit Sub Err_DBConnectOpen: MsgBox Err.Description If con.State <> ADODB.adStateClosed Then con.Close End If Set con = Nothing End Sub

  • SELECT文の加工

    いつもお世話になります。 現在複数の条件でレコード数を割り出すPGを作成中なのですが、SELECT文の認識不足のため、みなさんに案を頂きたく思っている次第です。 現在までのコードですが。。。 変数 ASU strSQL = "SELECT COUNT (*) AS ASU From 入場者実績 where 姓 = '" & Form1.Text1.Text & "'" 'レコードセットをオープン rs.Open strSQL, cn ASU = rs.Fields(0).Value Form1.Text2.Text = ASU というところまでなのですが、実際にはもう少し、期間範囲を取り入れた条件で絞りたいんです。(DTPickerを2つ使用し、その間の期間に入場した同一性の数をカウント。) SELECT文にどのような追加をしたらよいでしょうか? みなさんよろしくお願いします!

  • セレクト文

    下記のセレクト文に配列をセットしたいのですが、”onchange”を使った2段階?にするとエラーになってしまいます。 <html> <head> <body> <?php $selected[] = array(); unset($selected); $selected[$***[ "t" ][ "VALUE" = "SELECTED"; print("<select name=\"t\" onchange="if(t.value==1){s1.style.display='inline';s2.style.display='none'; }else{s1.style.display='none';s2.style.display='inline';}">") print("<option selected> print("<option value=1>1  print("<option value=2>2 print("<</select> $selected[] = array(); unset($selected); $selected[$***[ "s1" ][ "VALUE" ]] = "SELECTED"; print("<select name=\"s1\" style=display:none>") print("<option value=a>a") print("<option value=aa>aa") print("</select>") $selected[] = array(); unset($selected); $selected[$***[ "s2" ][ "VALUE" ]] = "SELECTED"; <select name=\"s2\" style=display:none>") <option value=b>b") <option value=bb>bb") print("</select>") ?> </body> </head> </html> よろしくお願いします。

    • 締切済み
    • PHP
  • VBAでの桁区切り表示について

    データベースからSQL文よりデータをSELECTして、Excelのセルに表示しています。 その際、数値を下記のように桁区切り表示したいのですが、どのようにしたらできるのでしょうか。 (1)100   → 100 (2)1000   → 1,000 (3)0.25   → 0.25 (4)1.75   → 1.75 (5)1111.25 → 1,111.25 もし、桁区切りと小数点以下を表示できない場合は、小数点以下を切り上げ表示したいと 思っています。 (3)0.25   → 1 (4)1.75   → 2 (5)1111.25 → 1,112 <今のプログラム> ★DBよりデータをSELECT Do Until .EOF    Cells(i, 2).Value = .Fields(0).Value    i = i + 1    .MoveNext Loop

  • VB6.0DataGridでのUpdate文で疑問?

    ADOの勉強したばっかりで、あまり詳しくありませんのでよろしくお願いします。 DataGridを使ってある条件で抽出しています。その抽出したものを更新したいのですが、 Do rs!分類ID = text1 rs.Update rs.MoveNext Loop Until rs.EOF という命令を書くと、いいような気がするのですが、なぜか抽出したデータが一個おきに書き換わります。 でも、 Do rs!分類ID = text1 rs.Update rs.MoveNext  if rs.EOF then rs.Previous END IF Loop Until rs.EOF と命令するとすべてのデータが書き換わります。 なぜなんでしょうか?疑問です。 VB6.0、ACCESS2000です。

  • MoveNextの処理速度は?

    お世話になります。 セレクトした結果(100000件)を一件ずつ違うテーブルにインサートする処理を行っているのですが、セレクトしたデータをMoveNextしていくとだんだん遅くなっていくような感じがします。MoveNextとはどのような処理なのでしょう か? またこの方法以外にSelectしたものを一軒ずつInsertするよい(早い)方法があれば教えてください。 Set oraDynaset = DATABASE.oraDynaset(セレクト文, 0&) Do Until oraDynaset.EOF insert処理... oraDynaset.MoveNext Loop

  • NULL文字のINSERT

    こんにちは。 SQLServer初心者です。 Access VBAで SQLServerから抽出したデータをDBにINSERT しようとしてるのですが、抽出した項目にNULLデータがあるので エラーになってしまいます。 どのように回避すればよろしいでしょうか? ISNULL関数を使えば回避できるのでしょうか? たとえば以下のようなINSERT分を実行したいのですが、 顧客名_漢字のフィールドにはNULL文字が入ってる場合があるとします。 よろしくお願い致します。 strSQL2 = "" strSQL2 = strSQL2 & " INSERT INTO NORSE_TMP_DATA ( " strSQL2 = strSQL2 & " ポート名" strSQL2 = strSQL2 & ", 顧客名_漢字" strSQL2 = strSQL2 & ", 顧客名_カナ" strSQL2 = strSQL2 & ", 契約状態" strSQL2 = strSQL2 & ", 契約番号" strSQL2 = strSQL2 & ", 契約枝番号" strSQL2 = strSQL2 & ", 顧客番号" strSQL2 = strSQL2 & " VALUES (" strSQL2 = strSQL2 & " '" & rs.Fields("ポート名").Value & "'" strSQL2 = strSQL2 & ", '" & rs.Fields("顧客名_漢字").Value & "'" strSQL2 = strSQL2 & ",'" & rs.Fields("顧客名_カナ").Value & "'" strSQL2 = strSQL2 & ",'" & rs.Fields("契約状態").Value & "'" strSQL2 = strSQL2 & "," & rs.Fields("契約番号").Value strSQL2 = strSQL2 & "," & rs.Fields("契約枝番号").Value strSQL2 = strSQL2 & "," & rs.Fields("顧客番号").Value strSQL2 = strSQL2 & " )"

  • Access2000上でのCStrコマンドの記述に関する質問です

    いつもお世話になっております。 Access2000で、あるデータをCSVファイルに変換しようと思って、各方面のご意見により、VBAで下記の通り記述し、実行致しました。 変換するフィールドの数が少なければ問題なく実行できますが、そのフィールド数が34種類以上になれば、「行継続文字( _ )を使いすぎています」との警告と共にエラーが発生します(なお、今回実行したいのは34種類のフィールドです)。 「CStr(adoRs.Fields("フィールド1").Value) ~ (adoRs.Fields("フィールド34").Value) 」と、1行で記述する等、何か良い方法がないものかと悩んでおります。 もし、解決方法をご存じの方がおられれば、その方法を教えて頂きたく、宜しくお願い致します。 ’--(ご参考)---------------------------------------------------- Dim adoRs As New ADODB.Recordset Dim strsql As String Dim strFile As String strsql = "SELECT フィールド1,フィールド2, ・・・・フィールド34" & _ "FROM ○○ファイル ORDER BY フィールド1" adoRs.Open strsql, CurrentProject.Connection strFile = "C:\AAAデータファイル.CSV" Open strFile For Output Access Write As #1 Do Until adoRs.EOF Write #1, _ CStr(adoRs.Fields("フィールド1").Value), _ CStr(adoRs.Fields("フィールド2").Value), _               ・                ・                ・ CStr(adoRs.Fields("フィールド34").Value) adoRs.MoveNext Loop adoRs.Close Close #1 ’---------------------------------------------------------

  • データベースから呼び出して、エクセルのシートに素早く転記したい。

    データベースから呼び出して、エクセルのシートに素早く転記したい。 オラクルのデータベースから呼び出して、エクセルのシートに転記しているのですが、 1項目ずつなので、1000行で1分くらい掛かります。 配列が良いと聞きますが、さっぱり分かりません。 何か良い方法があれば、御教授願えませんでしょうか? If (OraDset.EOF = False) Then Do Until (OraDset.EOF) Line_Cnt = Line_Cnt + 1 Range("C" & Line_Cnt).Value = OraDset.Fields("BBB").Value Range("D" & Line_Cnt).Value = OraDset.Fields("CCC").Value Range("E" & Line_Cnt).Value = OraDset.Fields("DDD").Value Range("F" & Line_Cnt).Value = OraDset.Fields("EEE").Value Range("G" & Line_Cnt).Value = OraDset.Fields("FFF").Value OraDset.MoveNext DoEvents Loop End If

  • SELECT文のソートについて

    SQLのSELECT文で抽出した列Aの値が、例えば1~12であるとして、それを4~12、1~3という具合にソートしたいのですがやり方がわかりません。 ORDER BY句を使えばいいのか、それとも全く別の方法を使うのか教えてください。 よろしくお願いします。

専門家に質問してみよう