SELECT文作成での条件抽出方法について
- SQLの作成で悩んでいる方へ、抽出元テーブルの条件抽出方法をご紹介します。
- 要件は、コードが同じデータの中で特定の項目を全て同じ値にして取得することです。
- コードが同じでSEQ=1の値を取得し、結果のデータ件数を抽出元テーブルと同じにします。
- ベストアンサー
ある条件のSELECT文の作成について
以下のSQLの作成で悩んでいます。 【内容】 抽出元テーブルの中で、あるコードが同じデータは、 ある項目を全て同じ値にして取得したい。 (例) ■抽出元テーブル コード SEQ FLG 1 1 1 1 2 1 3 2 1 0 2 2 2 3 3 1 1 コードは同じ物が1つ又は複数あります。 コードが同じ物にはSEQで番号が連番されます。 FLGの項目がありますが、SEQ=1のデータしか設定されていません。 ■求めたい結果 コード SEQ FLG 1 1 1 1 2 1 1 3 1 2 1 0 2 2 0 2 3 0 3 1 1 全てのデータでFLGを求めて取得します。 取得の仕方はコードが同じでSEQ=1の値を取ります。 抽出元テーブルと結果のデータ件数は同じになります。 抽出元テーブルと結果の違いは、FLGに値が埋まっているかどうかの違いのみです。 このテーブルのFLGはUPDATEする事は出来ません。 別表なども利用しないで、 selectのSQL文だけで対応したいです。 どのような方法で対応できるでしょうか? オラクルのバージョンは10gです。 よろしくお願い致します。
- evaag777
- お礼率51% (88/172)
- Oracle
- 回答数3
- ありがとう数4
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
select コード,SEQ, ( select flg from tbl t2 where t1.コード=t2.コード and t2.SEQ=1 ) FLG from tbl t1 の要領でいけると思います。 (コード,SEQ,)で一意になるのなら主キー設定したほうがいいでしょう。
その他の回答 (2)
- OrcaEater
- ベストアンサー率45% (5/11)
こんなんでいいんじゃないかな。既に出ている回答の方が高度なのかもしれないけど。 select 抽出テーブル.コード as コード、抽出テーブル.seq as seq,抽出テーブル2.フラグ as フラグ from 抽出テーブル, (select コード,フラグ from 抽出テーブル where seq = 1) 抽出テーブル2 where 抽出テーブル1.コード(+)=抽出テーブル2.コード order by 抽出テーブル.コード,抽出テーブル.seq;
お礼
お返事が遅くなりました。ご回答ありがとうございました。
- yamada_g
- ベストアンサー率68% (258/374)
first_valueファンクションを使って、 select コード ,SEQ ,first_value(FLG) over(partition by コード order by seq) FLG from 抽出元テーブル; とかでもいいと思います。
お礼
お返事が遅くなりました。ご回答ありがとうございました。
関連するQ&A
- SELECT文での抽出条件
以下のような処理を行いたいと思いますが SQL文の作成方法を御教授下さい。 【時間DB】 YEARMONDAY,HOUR,FLG, DATA ----------------------------- 20050528 1 1 10 20050528 2 1 20 20050528 3 1 30 20050528 4 1 40 . . . 20050528 22 1 40 20050528 23 1 50 20050528 24 1 60 【日DB】 YEARMONDAY,FLG, DATA ----------------------------- 20050528 1 250 処理内容:指定された日付で日DBの作成を行う。 抽出条件:フラグが全て等しい場合はその値を取得 :フラグが一致しない場合は0を取得 上記の場合,SQL文で抽出可能でしょうか? 以上,よろしくお願い致します。
- ベストアンサー
- Oracle
- 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
- SQLのSELECT文教えてください。
VB5.0で、DBはSqlServer2000です。 SQL文のSELECT文で質問です。 ○A_TABLEの構成(概略) ・・・担当コード1・・・担当コード2 ○TANTO_TABLE 担当コード/担当名 (質問)TANTO_TABLEからA_TABLEの担当コード1と担当コード2の担当名を抽出したいのです。 次のSQLだと担当コード1のみしか抽出できません。 効率よく担当コード1と2の担当名を抽出するSQLを教えてください。お願いします。 SELECT 担当名 FROM A_TABLE,TANTO_TABLE WHERE A_TABLE.担当コード1 = TANTO_TABLE.担当コード
- ベストアンサー
- Visual Basic
- SELECT文について
対象のテーブルを以下とした時に、 GROUP「001」と「002」のそれぞれの「値1」「値2」の合計値を表示したいのです。 テーブル名 TBL_1 |グループ1| 値1 | 値2 | | A | 2 | 4 | | A | 3 | 7 | | B | 10 | 5 | | B | 15 | 8 | | C | 20 | 30 | | C | 15 | 25 | 取得したい結果は以下です。 | グループ_A合計値1 | グループ_A合計値2 | グループ_B合計値1 | グループ_B合計値2 | | 5 | 11 | 25 | 13 | 色々と試したのですが、ハマってしまいました。 SQLを教えて頂けないでしょうか。お願いします。
- 締切済み
- その他(データベース)
- SQL文 複数条件の場合の書き方
初めて質問します。 下記のようなデータが存在します。 テーブルA NO DATE GYO 1 2010/12/01 1 1 2010/12/01 2 2 2010/12/01 1 2 2010/12/01 2 2 2010/12/01 3 3 2010/12/02 1 <= 4 2010/12/03 1 4 2010/12/03 2 上記データにて、<=の行の値を取得し変数へ代入したとします。 変数.NO =3 変数.日付 =2010/12/02 変数.GYO =1 上記、変数を元に1件前のレコードを抽出したいのですが SQL文でのいい方法がわかりません。 取得したいレコード 1 2010/12/01 1 1 2010/12/01 2 2 2010/12/01 1 2 2010/12/01 2 2 2010/12/01 3 どうかお願いいたします。
- ベストアンサー
- Oracle
- 一つのSQL文で取得したい
こんにちは。 テーブルAに以下のようなデータがあるとします。 ID |名称 |項目 -------------- 01 |ああ | 02 |いい | 03 |うう |01,02 04 |ええ |01 SELECT文で取得したいのは、フィールド「項目」の値を、他のレコードの名称で置き換えた列です。 つまり、 ID |名称 |項目 |項目名称 ------------------ 01 |ああ | | 02 |いい | | 03 |うう |01,02 |ああ,いい 03 |ええ |01 |ああ という結果が欲しいということです。 「項目」の値はカンマで区切られています。 これを一つのSQLで取得したいと思っています(テーブルの結合、サブクエリーはOK)が、方法がわかりません。 どなたかどうぞご教授ください。 よろしくお願い致します。
- ベストアンサー
- SQL Server
- SELECT文で条件にあったテーブルからデータを取得するには?
WinServer2003,WinXP,ORACLR10g使用しています。 SQL文の問合せ(SELECT)で、条件にあったテーブルを読みデータを取得するにはどのようなSQLの記述方法が良いでしょうか、お願いします。 3つのテーブルがあります。 Kdata,M_Fuku,M_Shokuhin KdataのデータのフィールドKkubunが 1の時はM_Fukuから,5の時はM_Shokuhinから品名のデータを取得したいです。 Kdata 1 コード 2 日付 3 区分 4 数量 5 単価 M_Fuku 1 コード 2 品名 M_Shokuhin 1 コード 2 品名 日付 区分 品名 数量 単価 金額 060710 1 ジャケット 1 5000 5000 060711 5 玉子 2 100 200 このようにしたいと思っています。 よろしくお願いします。
- ベストアンサー
- Oracle
- select文について
現在、"user"というテーブルに"id"と"date(datetime)"という項目があり、その"date"にあるデータの中から月を指定して抽出したくて以下ようなSQL文を書いたのですがうまくいきません。 SELECT `id` FROM `user` WHERE convert((SELECT extract(month from `date`) FROM `user`), INTEGER) = 9 mysql5.0です。 よろしくお願いします。
- ベストアンサー
- MySQL
- Select文を教えて下さい
select文についてお教えください。環境はAccess2003,Win XPで動かしています。 TABLE ID(INT),STOCK(INT) 001,100 001,200 001, 002,200 002,300 002,400 003,100 上記のようなテーブル、データがあります。 ■抽出したい行 001,100 001,200 ■抽出条件 STOCKに空がはいっている。 STOCKに空がはいっている行は選択しない。 STOCKに空がはいっているIDで、同一IDでSTOCKにデータがある行を抜き出したいです。 どのようにSQLを組み立てればよいかわかりません。 宜しくお願い致します。
- ベストアンサー
- その他(データベース)
- ある条件でのSQLの取得方法について
以下の条件でのSQLのデータの取得方法が分かりません。 2つのテーブルがあるとします。 ・テーブルA キー 項目1 10 X 20 Y ・テーブルB キー 項目2 項目3 10 5 C 10 6 D 12 6 E ここで取得する条件として ■テーブルAにあるのは、必ず取得します。 ■テーブルAのキーとテーブルBのキーは繋がり、繋がったテーブルBの情報は 別レコードとして取得します。 ■テーブルAのキー1つに対して、テーブルBのキーは無いかも知れないし、 複数件あるかも知れません。 無い場合はテーブルAの情報のみを出力し、複数件ある場合はその全てを出力します。 ■テーブルBの項目2が同じ値のデータがある場合、テーブルBを出力したレコードと 同じレコードに、項目2が同じデータの情報を出力します。 項目2が同じデータが無い場合はこの情報は出力しません。 項目2が同じ値のデータは最大2件しかありません。 上記の例の場合に出力したい結果 ・出力テーブルC キー フラグ 項目1 項目2 項目3 項目2が同じキー 項目2が同じ値 10 テーブルA X 10 テーブルB 5 C 10 テーブルB 6 D 12 E 20 テーブルA Y (テーブルC のフラグとは、テーブルAの情報かテーブルBの情報かを示します) これを出来ればSQL、出来なければPL/SQLで取得したいのですが どちらの場合でも取得の方法に悩んでいます。 どのような方法で取得できるのでしょうか?
- ベストアンサー
- Oracle
お礼
お返事が遅くなりました。ご回答ありがとうございました。 この方法で問題なく動作確認できました。