• 締切済み

【Oracle】Countの方法

現在、Oracle8.1.7で開発をしております。 データの件数を数えたいのですが、やりたいことが複雑なので、うまくいきません。 以下のようなテーブルがあったとします。 テーブルA 商品名 ID 検査  A   1  ○  A   2  △  A   3  ×  B   4  -  B   1  ○  B   2  ○  B   3  △  C   1  ○  D   1  △ 商品名と、IDがキーとなっています。 商品名に対して、IDは複数存在しますが、 いくつあるかはわかりません。 このとき、1つでも『×』が存在したら、 その商品名は『×』として数えたいのです。 優先順位としては、  ×>△>○>- です。 ちなみに、上記のような場合には、 ×:1商品(A) △:2商品(B・D) ○:1商品(C) としたいのです。 データの件数が多いので、何かよい方法があったら 教えて下さいm(_ _)m

みんなの回答

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.1

こんにちわ。 手元に環境が無いので、確認していませんが 以下の手順でどうでしょう?  1) 「×,△,○,-」を数値化します。    (当然×>△>○>- 順です)  2) 商品毎の検査結果を確認します。    Select 商品名, MAX(検査) 検査結果 from 表名     group by 商品名;  3) 2) のSQL 文を入力にして、    (インライン・ビューで大丈夫かな?)     検査結果毎にCOUNT を行う。

mybigbaby
質問者

お礼

自分でFUNCTIONを作成して、なんとか解決できました。 回答ありがとうございます。 こんなやりかたもできるのですね。 今後の参考にさせて頂きます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • oracle8 マッチングして更新する方法

    テーブルAのaが テーブルBのaと同じとき テーブルAのa,b,c,d,eを テーブルCのa,b,c,d,eに書き換える (全てのaは主キーです。各データは複数です) ということはひとつのSQLで可能ですか。 よろしくお願い致します。

  • 【エクセル】計算で困っています

    元のデータにはこのような情報が入っています。 商品ID 商品名 購入件数 1    A    2 2    B    3 3    B    3 4    A    4 5    C    3 ~ 99    C   5 100    A   3 異なる商品IDで同じ商品名のものがある場合 商品名別の売り上げ件数を調べるにはどうすればいいでしょうか? よろしくお願いします。

  • 2つのテーブル結合

    Oracle10g使用しています。 テーブルAとテーブルBを結合させてデータを取得したいと思っています。 [テーブルA] ID name 1 A 2 B 3 C 4 D [テーブルB] ID SEQ VALUE 1 1 111 2 1 222 2 2 333 3 1 444 4 1 555 4 2 666 4 3 777 テーブルAのキーは[ID]、テーブルBのキーは[ID,SEQ]です。 この二つを連結して以下のように出力したいと思っています。 ID SEQ NAME VALUE 1 1 A 111 2 2 B 333 3 1 C 444 4 3 D 777 テーブルBのデータは同じIDのうち最大のSEQのものを取得したいのですが よいSQLが思いつきません。 よい方法があればご教授ください。 よろしくお願いいたします。

  • ACCESSとORACLEで抽出結果が異なる

    いつもお世話になっております。 ACCESS2000を扱っております。 ACCESSのデータベースにODBCを接続してORACLEの テーブルをリンクテーブルとしてインポートします。 そして、ACCESSのテーブルとORACLEのテーブルを LEFT JOIN を行いクエリーを作成したのですが、 正しい結果が抽出できません。 ただし、ORACLEのテーブル構成・データと全く同一の ACCESSのテーブルを作成し、クエリーを作成したところ 正常に動作しております。 SQLは以下のような内容となっております。 sSQL = SELECT TBL_1.A, TBL_1.B, TBL_1.C FROM TBL_1 LEFT JOIN TBL_2 ON TBL_1.A = TBL_2.A AND TBL_1.B = TBL_2.B AND TBL_1.C = TBL_2.C WHERE TBL_2.A IS NULL AND TBL_2.B IS NULL AND TBL_2.C IS NULL TBL_1がORACLEより引っ張ってきたリンクテーブル、 TBL_2がACCESSに存在するテーブルになります。 以上のSQLで、TBL_2に存在なくTBL_1に存在するレコード、及びTBL_1とTBL_2でキー項目は同じだが 内容が異なるレコードを抽出できると考えているのですが、TBL_2に存在なくTBL_1に存在するレコードしか 抽出できません。 個人的には、処理する件数が多大であることが影響しているのかとも考えているのですが・・・。 (両テーブルともに約20万件レコード) クエリーを分割することで解決はしたのですが、 原因究明を求められておりまして大変困っています。 皆様の知恵を借りたいです。宜しくお願いいたします。

  • 複数JOINしているとCOUNTが正しく取得できな

    LAMP環境で開発をしています。 SQL文でCOUNTを求める際に、まとめて結果を求めようとして上手く行きません。 状況としては以下です。 テーブルdはidをkeyにa,b,c3つのテーブルとjoinしています。 id = 1の場合、テーブルa,b,cにマッチするレコードがそれぞれに4個、1個、0個あります。 ひとつひとつを SELECT COUNT(CASE WHEN a.name IS null THEN 1 ELSE null END) as a_count FROM d INNER JOIN a ON a.id = d.id WHERE d.id = 1 として結果を求めると4,1,0と出るのですが、まとめて SELECT COUNT(CASE WHEN a.name IS null THEN 1 ELSE null END) as a_count, COUNT(CASE WHEN b.name IS null THEN 1 ELSE null END) as b_count, COUNT(CASE WHEN c.name IS null THEN 1 ELSE null END) as c_count FROM d INNER JOIN a ON a.id = d.id INNER JOIN b ON b.id = d.id INNER JOIN c ON c.id = d.id WHERE d.id = 1 とすると28,5,0という値が返されます。 どのように書けば正しい4,1,0を得られるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQLを教えてください!!

    テーブルAとテーブルBがあり、両方に存在しないものを抽出してエラーとする処理を行いたいのですが、 どういうSQlを書いたらいいのか教えてください。 下記例としてテーブルにデータがあったとしたら、結果として 004 商品D 005 商品E 006 商品G というデータを抽出したいのですが・・ テーブルA             テーブルB -------------        ----------------------- コード  商品名 NO コード   商品名 001 商品A        1 001 商品A 002 商品B        2 001  商品A 003 商品C        3 002   商品B 004 商品D        4 003 商品C 006 商品G        5 003 商品C                 6 005 商品E

  • クライアントの自由にソートする

    お世話になっております。 現在データベースの中に下記のようなデータが存在するとします。 A B C D 1 2 3 4 (Aのカラムに1) (Bのカラムに2) と言う具合にデータが入っています。 そこで質問なのですが、クライアントの自由にABCDのカラム内のデータをソートさせるにはどのようにしたらよいでしょうか? 現在は、データベースのテーブルを下記のようにする対処方法しか思いつかないのですが、できれば上記テーブル構成のままソートさせたいのですが何か良い方法は御座いませんでしょうか? 例)  クライアントがA D B C の順にソートしたい場合 テーブル名:TB1 A  1  順位1 B  2  順位3 C  3  順位4 D  4  順位2 select * FROM TB1 A ORDER BY 順位 ASC 出力: 1 4 2 3

  • 件数の多い順にselect

    テーブル名:HOGE ID  USER --------------- 001  A 002  C 003  A 004  B 005  A 006  C 007  A 008  C 009  D 010  D で、下記のような結果が出したいです。 A 4 C 3 D 2 B 1 件数の多い順に並べたいです。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • Oracle8での外部結合

    現在、oracle8.1.7で開発しています。 T1,T2,T3の3つのテーブルがあります。 T1のデータで、T3のテーブルにまだデータが存在しないものを検索しています。 それは既にできました。 次に、条件として、  (1)T1のA,B,Cと一致し、かつFLGが5または9  (2)T1のA,B,Cと一致するデータがない。 という2点を追加しました。 しかし、以下のようにFLGが1となっているものまで検索してしまいます。   <T1>        <T2>      <T3> A:あいうえお     A:あいうえお    データ無し B:bbb        B:bbb C:ccc        C:ccc             FLG:1   ===SQL文============================================================== SELECT A,DT1,DT2 FROM T1 WHERE A LIKE 'あ%' ---追加部分---- AND ( EXISTS (SELECT A FROM T2 WHERE A=T1.A AND B=T1.B AND C=T1.C AND FLG IN (5,9)) OR NOT EXISTS (SELECT A FROM T2 WHERE A=T1.A AND B=T1.B AND C=T1.C ) ) ----ここまで---- AND NOT EXISTS (SELECT * FROM T3 WHERE KATAMEI='あ' AND NO=1) どこがいけないのでしょうか? よろしくお願いしますm(_ _)m

  • Oracle10gのSQL文についての質問です。

    Oracle10gのSQL文についての質問です。 [A]テーブルに CODE(key) NAME と、フィールドがあります。 A NAME-A B NAME-B C NAME-C D NAME-D E NAME-E と、データが入っています。 [B]テーブルに CODE(key) LINE(key) BIKO と、フィールドがあります。 A 1 BIKO-A-1 A 2 A 3 BIKO-A-3 B 1 B 2 B 3 C 1 C 2 BIKO-B-2 C 3 D 1 BIKO-D-1 D 2 BIKO-D-2 D 3 BIKO-D-3 E 1 E 2 E 3 BIKO-E-3 と、データが入っています。 結果が CODE(key) LINE(key) BIKO と、フィールドがあります。 A 1 BIKO-A-1 A 2 BIKO-A-1 A 3 BIKO-A-1 B 1 (null) B 2 (null) B 3 (null) C 1 BIKO-B-2 C 2 BIKO-B-2 C 3 BIKO-B-2 D 1 BIKO-D-1 D 2 BIKO-D-1 D 3 BIKO-D-1 E 1 BIKO-E-3 E 2 BIKO-E-3 E 3 BIKO-E-3 と、したいのです。 つまり、[B]テーブルのLINEが一番小さいBIKOが欲しいのです。 色々と考えてみましたが、解りません。 宜しくお願い致します。

MFC-J6983CDW PCと接続できない
このQ&Aのポイント
  • 現場事務所に移動させてPCと再接続したらプリンタがずっとオフラインで印刷できなくなった。
  • お使いの環境はWindows11で、接続は有線LANとUSBケーブルの両方がダメでした。
  • 関連するソフト・アプリや電話回線の情報は提供されていません。
回答を見る