- ベストアンサー
SQL書けますか?
field1,field2がありまして、データが4件あるとします。 データの内容はそれぞれ、 1,B 2,C 3,A 4,B が入っています。 この時selectで 1,B 4,B 2,C 3,A と言う順番で取ってきたい場合どのように書けばいいのでしょうか? field1の昇順が基本だけど、field2が同一の場合優先順位関係なしに連続して表示したいんです。 よろしくお願いします。
- yamadachan
- お礼率29% (47/162)
- Oracle
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>Field1が同値だった場合、同値のものが間に入り込んでしまうんですが対処法は何かありますでしょうか? 言ってることがよくわからないけど・・ select T1.* from T T1,(select Field2,min(Field1) skey from T group by Field2) T2 where T1.Field2=T2.Field2 order by T2.skey,T1.Field2,T1.Field1; なり select Field1,Field2 from (select T.*,min(Field1) over(partition by Field2 oder by Field1) skey from T) order by skey,Field2,Field1; で良いのでは? 違うのであれば、どういうデータをどう表示したいか具体的に書いてください。 サンプルにない、説明に出てこない要素は対処のしようがありません。
その他の回答 (1)
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
select T1.* from T T1,(select Field2,min(Field1) skey from T group by Field2) T2 where T1.Field2=T2.Field2 order by T2.skey,T1.Field1; とかで良いかと思います。 分析関数が使えるなら・・ select Field1,Field2 from (select T.*,min(Field1) over(partition by Field2 oder by Field1) skey from T) order by skey,Field1; の方が効率が良いですけどね。
補足
回答ありがとうございます。 Field1が同値だった場合、同値のものが間に入り込んでしまうんですが対処法は何かありますでしょうか?
関連するQ&A
- AccessVBA SQLのWHERE句について
こんにちは! テーブルAのBフィールドの中に以下のデータがあるとき(昇順です) 1,2,5,6,12.... 3という数値を得たいです。 3,4がフィールドに含まれる場合は、7です。 数字がバラバラなので、データを新規追加した時に穴埋めをしていきたいのです。 データの登録した順番は関係ないものとして、どのように実現できますでしょうか? ORDERでデータを取ってきて、ループするしかないのでしょうか・・・? 特殊な例ですみませんが、宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- SQL詳しい方、助けてください。
こんにちは。 UPDATE テーブルA SET フィールドA1 = '1' WHERE フィールドA2 =(SELECT フィールドB1 FROM テーブルB WHERE フィールドB2 = 'C0' OR フィールドB2 = 'C2' AND フィールドB3='') AND フィールドA3 = '' AND フィールドA4 <> '' というSQLを作成して、動作していたので安心していたら、 テーブルBのレコード数は1件のみだと思っていたら、複数存在する場合があるとのことで、 テーブルBのレコードを追加してみたところ、、 【サブクエリは複数の値を返しました。サブクエリが = 、!= 、<、<= 、>、>= のあとに続く場合や、 サブクエリが 1 つの式として使われる場合に複数の値は許可されません。】 というエラーで終了するようになってしまいました。 そこで、 UPDATE テーブルA AS A INNER JOIN テーブルB AS B ON A.フィールドA2 = B.フィールドB1 SET A.フィールドA1 ='1' WHERE B.フィールドB2 = 'C0' OR B.フィールドB2 = 'C2' AND B.フィールドB3='' AND A.フィールドA3='' AND A.フィールドA4 <> '' としてみました。 なんだか混乱してきて、結合条件があっているかが 自分でもよくわかんなくなっていますが。 しかも、 上記のSQLをSQL SERVER 2000のクエリアナライザで 実行すると、 【キーワード 'inner' 付近に正しくない構文があります。】 というエラーが・・・。 INNER 以下はいろいろおかしいんだろうな・・・と 思っていたのですが、まさか、そんなしょっぱなで引っかかるとは思いませんでした。 いろいろ、記述方法を変更してみたり、考えたんり したんですけど、情けないことにさっぱり解りません。 どなたかお力をお貸しください。 お願いします。
- ベストアンサー
- その他(プログラミング・開発)
- SQL文で
すみません。質問させてください。 A,B,C,D,Eと5個のフィールドで構成されたテーブルtableがあるとします。 tableにはデータがすべて格納され(NULLなし)ています。 ですが、フィールドA,C,DについてA,C,Dとも同じデータが格納される ことがあります。 その重複したデータ以外を取得したいのですが (要するにフィールドA,C,Dでユニークのデータのみ取得) SQL文でどのように書けばいいかわかりません。 よろしくお願いいたします
- 締切済み
- その他(プログラミング・開発)
- SQLのbetweenについて
現在SQLを勉強しています。 C♯とSQLServerを使用しているのですが betweenを使って困った点があります。 自分で入力するAとB(どちらも数字)をbetweenの条件にしていしているのですが 例) select フィールド名 from テーブル where フィールド名 between A and B; → テーブルのフィールド名 の中のAからBのデータを選択する は問題ありません。 ですがAとBが未入力だとエラーが当然でてしまいます。 そこで未入力だとフィールド名の中を全件selectするようにしたいのですが、これはbetween で出来るのでしょうか? おそらくは条件であれこれ指定するのだと思いますが… 回答お願いします
- ベストアンサー
- SQL Server
- SQLの書き方について教えてください。
SQL Server2000で下記のようなSQL文を書きたいと思っています。 テーブルAとテーブルAに無関係な2個のフィールドを 持つテーブルBがあり、テーブルAのデータをテーブルBにコピー したいと考えています。その際にテーブルBの2個のフィールドに対して 決められた値を挿入したいのですがどのように記述すればよいのか わかりません。 お分かりの方お教えいただけませんでしょうか よろしくお願いいたします。 下記の記述をしています。 INSERT INTO テーブルB ( A, B, C, D ) SELECT テーブルA.A, テーブルA.A, XXX1, XXX2 FROM reserveSETdateTRN; Cに東京 Dに品川 を入れたいと思っています
- 締切済み
- SQL Server
- エクセルで名簿作成中、名前順に並べ変える方法を教えて下さい。
エクセルにて約15、000件分(同世帯含む)の名簿作成中です。 町別にシートは作成しており、各町ごと姓(世帯ごと)を「あいうえお順」(昇順)にして作成したいのです。 ツールバー→データ→並べ替えを選択し、優先順位をAフリガナ、B住所、C電話番号として並べ替えをしたところ、例えば、同じ町内に姓が「斉藤」という世帯が何件もいた場合、優先順位の一番をフリガナにしている為、姓は斉藤でも名前のフリナガナが早い順で並べ替えになってしまい、どうしても世帯ごとの昇順にならないのです。町によっては500件近い場合もあり、確認するだけで時間がかかっております。 もし、何か解決方法があれば、どなたか是非教えて下さい。よろしくお願い致します。
- ベストアンサー
- Windows XP
- SQL 複数のテーブルから重複なしでデータを取得
同じフィールド名[名前]を持つテーブルが複数個あります。 仮にテーブル名を、A、B、C、Dの4個だとします。 それらのテーブルから、フィールド名[名前]のデータを重複なしで取得したいのですが、SQL文が思いつきません。 取得するフィールドは[名前]だけです。 select distinct(名前) from A union select distinct(名前) from B union select distinct(名前) from C union select distinct(名前) from D だと、各表に同じ名前が存在する場合は結果も重複してしまい、期待する結果が得られませんでした。 環境はOracle 9iです。 SQL文を教えてください。よろしくお願いします。
- 締切済み
- Oracle
- COBOLの動的SQLについて
COBOLにおいて、動的にSQLを組みたいのですが、 取得する方法も含めてご教授願いませんでしょうか? 例) 条件により コード=1の場合、 SELECT A.ID,B.NAME FROM ID A,NAME B コード=2の場合、 SELECT A.ID,B.NAME,C.ADDRESS FROM ID A,NAME B,ADDRESS C のように条件により取得する項目も数もテーブルも違います。 この場合でのSQLの組み方とデータを取得する(FETCHの方法)がわかりません。 また、取得する件数も1件ではありません。 よろしくお願い致します。
- 締切済み
- その他(プログラミング・開発)
- 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
お礼
ありがとうございます。 k_o_r_o_c_h_a_nさんの回答をヒントに色々試してたら出来ました。