• ベストアンサー

データの絞り込みってどのように処理されていますか?

yanmaaの回答

  • ベストアンサー
  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.2

私的方法 1.AとBの条件でFとFのカウント値を取る 2.1の結果がFのカウント値が1ならFの値を取る →ここで処理終了 3.AとBの条件でCとCのカウントとFの最大値を取ります。この時Cの降順にソートします。グループ化すると言うことですよ。 4.3の結果の1件目のCのカウント数が1ならFの最大値を取る →ここで処理終了 5.以下Dに対して、Eに対して・・・同文 て方法が簡単ですね 通常ワークテーブルにCからFの値を入れてから上記の方法をすれば件数にもよりますが速い処理が可能となります。 SQL的には INSERT INTO WKTBL (C,D,E,F) SELECT C,D,E,F FROM TRNTBL WHERE A = 100 AND B = 50 その後はWKTBLにて処理をするこの時はA、Bの条件は不要。 レコードセットはpaz777さんので良いでしょう。

j279702
質問者

お礼

目が覚めた感じがします。私は随分難しいことを考えていたんですね。 「ソートをかけてグループ化」、思いつきもしませんでした。 良い方法を聞けて良かった。心から感謝します。 本当にありがとうございました。

関連するQ&A

  • Accessで2つのテーブルのデータの整合性を確認したい

    Accessで2つのテーブルのデータの整合性を確認したいのですが、よい方法を教えていただけませんか? 状況は以下のとおりです。 Aテーブル    a   b    c   d   e       1  111  222  333  444  555 2  666   777 888 999 100 3   110 112 113 114 115 Bテーブル    a   b    c   d   e       1  111 222 333 444 555 2  666 777 000 999 100 3   110 112 300 400 500 ・AテーブルとBテーブルがあり、それぞれのテーブルのa、b、dフィールドのみを対象に、その値がAテーブルとBテーブルとで等しいかどうか調べたい。 (c、eフィールドの値が異なっていても、a、b、dフィールドの値が同じであればそのレコードはOKとし、a、b、dフィールドで1つでも異なる値があればNGとし、抽出したい。 例えば、Bテーブルの1、2レコードはOKだが、3レコードはNG) ・それぞれのテーブルのaフィールドが主キーになっている。 うまく説明できず、わかりにくいかもしれませんが、よろしくお願いします。

  • EXCELの関数についてご教授ください。

    EXCELの関数についてご教授ください。 【質問内容】 以下エクセルのデータがあるとします。 A       B  C  D   E F 2013/10/1 新 100 2013 10 1 2013/10/1 旧 100 2013/10/1 新 101 2013/10/1 新 102 2013/10/1 旧 102 2013/10/1 新 103 2013/10/1 旧 110 2013/10/1 旧 110 2013/10/1 旧 110 2013/10/2 旧 110 ※D1,E1,F1には任意の日付を入力できるイメージ (1) D1,E1,F1にそれぞれ上記の値(2013年10月1日)を入力した場合、 A列が「2013/10/1」かつ B列が「新」の件数は 「4件」 と出力されるようにしたいです。 ※「100」「101」「102」「103」が集計され計4件 ※この場合(B列が新の場合)はC列は同じ値は入らないので考慮しなくてよい (2) D1,E1,F1にそれぞれ上記の値(2013年10月1日)を入力した場合、 A列が「2013/10/1」かつ B列が「旧」で C列が「重複しているものは1件でカウント」すると 「3件」 と出力されるようにしたいです。 ※「100」「102」「110」が集計され計3件 ---------- (1)は以下自力で解決出来るようなのですが、 =SUMPRODUCT((A1:A$10=DATE(D1,E1,F1))*(B1:B10="新")) (2)が難解すぎて質問させて頂きました。 皆様お忙しいところ、大変申し訳ございませんがお力をお借りしたく思います。

  • データ処理について(至急)

    テーブル名 TEST 項目:A,B,C,D,E キー:A,B,C,D データ: A1,B1, ,D1,10 A1,B1,1,D1,15 A2,B2,1,D2,2 A3,B3,1,D3,5 A3,B3, ,D3,5 キー項目C以外のキー項目の値が一致している同士レコード洗い出したいです。 すなわち、、 A1,B1, ,D1,10 A1,B1,1,D1,15 A3,B3,1,D3,5 A3,B3, ,D3,5 を抽出したいです。 抽出方法わからないので、教えて頂きたいです。 ↑↑↑↑↑↑↑↑↑↑質問はここまで↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ その後の操作は下記となります。 項目A,B,C,DはPRIMERY KEYなので、 C項目だけ値が違う2レコードを1レコードにする。 A1,B1, ,D1,10 A1,B1,1,D1,15  ⇒A1,B1,1,D1,25 A3,B3,1,D3,5 A3,B3, ,D3,5  ⇒A3,B3,1,D3,10

  • データ移動処理

    0 0 1 0 0 1・・・ a b c d e f ・・・ a b c d e f ・・・ a b c d e f ・・・ 上図で一番上の行にある数字が1の場合だけの列を選択し、1の列全てをコピーをして 別シートへ移動して今度は、行で挿入をして貼り付けを行いたいと考えております。 しかし、データ量がものすごく多いので1だけがいくつあるのかさえわからないため 挿入先にも一体いくつ挿入すればいいかわかりません。 データ量(行が1の数)にあわせて挿入数をいれ、また列のデータから行のデータへの変換はどうすればいいかお力を貸していただけないでしょうか? 今回の質問はEXCELについてです。 そしてできればVBAのほうで処理を行いたいと思っております。 (原本のデータ編集が何度もされるのでVBAで登録しておこうかと^^;) よろしくお願いいたします。

  • SET句内で複数の条件を指定してUPDATEする方法

    SQLに関しまして質問させて頂きます。 テーブルAがあり、以下のような条件を一つの SQL文で実現したいと思っています。 【条件】 (1)e列が1のものを対象に更新をかける (2)条件(1)を満たすレコードのf列の値をsysdateで更新する (3)条件(1)を満たすレコードのdの値に関しては  「bが岡山 かつ cが男 であれば dを030へ更新し、   そうでなければ dの値は更新しない」こととする 【テーブルA】 ------------------------------------------- a b c d e f 1 愛媛 男 010 1 2/5 2 岡山 男 050 1 1/30 3 岡山 女 020 0 1/12 ------------------------------------------- 条件(3)が「bが岡山」といったように一つであれば ------------------------------------------- UPDATE A SET d = decode(b,'岡山','030',d),   f = sysdate WHERE e = 1 ------------------------------------------- といったようにdecode関数を使用して実現できるのですが、 「bが岡山 かつ cが男」というように条件(3)が 二つの条件によって構成されている場合、 どうすれば良いか分かりません。 decode関数で複数の条件を指定することが出来ればいいのですが・・。 以上、ご存知の方がいらしましたら、 ご教授よろしくお願い致しますm(_ _)m 【環境】 oracle 9i

  • EXCLのフィルター実行後のデータカウント方法

    EXCEL2007で作成した表で下記のようにD列(H-O)を +20でオートフィルターで抽出した後、F列 の+と-と0の値を持つデータをそれぞれ +値=2件 -値=2件 0値=1件 というようにカウントしたいのですがSUBTOTAL関数では そのような集計方法がなく困っています。 何かいい方法はありませんでしょうか?  A列  B列  C列  D列  E列  F列 ------------------------------------- 1 日付  O  H  H-O  C  C-O -------------------------------------   2 06/01 100 120  +20 130 +30 3 08/08 115 135  +20 115 0 4 08/13 140 160  +20 130 -10 5 09/22 132 152  +20 120 -12   6 10/06 105 125  +20 130 +25

  • 膨大なデータ処理について

    膨大なデータ処理を行っているのですが効率が悪く 望んでいる機能があるかどうか探しましたが探し方が悪いせいか みつからないので質問させて頂きます。 A,B,C列にそれぞれ2万程度のデータが連続してあり D,E,F列にA,B,C列の平均と標準偏差、相対標準偏差を それぞれ求めるということを100ファイルほどするのですが 今のところ A1,B1,C1の平均値、標準偏差、相対標準偏差を D1,E1,F1に関数で求めて各セルの右下をドラッグして D20000、E20000、F20000まで 持っていっているのですが 非常に時間が掛かってしまい効率が悪い現状です。。 そこでもし何か良い機能がございましたら 是非教えていただきたいです。 宜しくお願いいたします。

  • EXCEL エクセルのフィルター実行後のデータカウント方法

    EXCEL2007で作成した表で下記のようにD列(H-O)を +20でオートフィルターで抽出した後、F列 の+と-と0の値を持つデータをそれぞれ +値=2件 -値=2件 0値=1件 というようにカウントしたいのですがSUBTOTAL関数では そのような集計方法がなく困っています。 何かいい方法はありませんでしょうか?  A列  B列  C列  D列  E列  F列 ------------------------------------- 1 日付  O  H  H-O  C  C-O -------------------------------------   2 06/01 100 120  +20 130 +30 3 08/08 115 135  +20 115  0 4 08/13 140 160  +20 130 -10 5 09/22 132 152  +20 120 -12   6 10/06 105 125  +20 130 +25

  • Access2003 複雑な条件のデータ抽出

    ☆1つのテーブルで、フィールド[A]~[C]があり、文字および英数字のデータが混在しています。 (ただし、フィールド[C]には、空欄(Null)になっている場合があります) =========================================================== (テーブル(1)) No  [A]      [B]    [C]     [D]      [E]      [F] 1   111      X    あ       2   222      X     か   3   333      X     さ  4   111      Y    た 5   222      Y   (Null)  6   333      Y     は 7   222      Z     ま   8   333      Z     や  9   111      Z    ら    =========================================================== [課題] (1) テーブル(1)のフィールド[A]の値を参照し、「111」の場合は、   フィールド[C]の値を[D]へ抽出する([B]でグループ化) (2) 同様に、フィールド[A]の値を参照し、「222」の場合は、   フィールド[C]の値を[E]へ抽出する([B]でグループ化) (3) 同様に、フィールド[A]の値を参照し、「333」の場合は、   フィールド[C]の値を[F]へ抽出する([B]でグループ化) (4) 新規クエリにて、上記課題(1)~(3)の条件を指定して実行すると    以下の抽出結果が表示される =========================================================== [抽出結果] (テーブル(2)) No  [B]    [D]    [E]      [F] 1   X     あ    か      さ     2   Y     た   (Null)    は   3   Z     ら    ま     や =========================================================== 別々のレコードにあるフィールド[C]の値を、条件に従い テーブル(2)のように1つのレコードにまとめたいのです。  大変恐縮ですが、私はSQLが書けないので、フィールド欄へ関数式を 入力して条件を指定しております。 できましたら、各フィールドへ入力する関数式を教えていただけると助かります。 また、関数だけでは出来ない場合は、SQLで教えていただければ幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

  • VBAでのデータの値を選択する事について

      A   B   C   D   E   F   G 1 10  15       9   23  33  55 2             10   33  44  56 3             11   44  55  57            4             12   55  66  76 5             13   23  77  87 6             14   33  88  88 7             15   45  99  99 8             16   55  21  56 9             17   66  45  76 10            18   77  52  54 質問です A1の値が10 B1の値が15 でA1とB1の値は各データによって異なって入力されています。 決まりとしては、 A1<B1で, 必ず、A1の値とB1の値はD列に存在します。 A1の値とB1の値をマクロで取得し、 D列でその選択範囲を検索し、D列の10~15の値の選択範囲で、 D2:G7までをうまくコピーし、違う場所に張り付けしたいのです。 もし、詳しい方がいらっしゃいまして、簡単にできる方法がありましたら、 ご指導の程お願い致します。