• ベストアンサー

SQLの質問です。

mhassyの回答

  • mhassy
  • ベストアンサー率43% (16/37)
回答No.1

質問に記入された「条件」が矛盾しているようです。 また、不明な点も有ります。 >(1)重複があるものを除き ≠ >ただし同じNoが重複しているデータは・・・のみ出力をしたい 重複が発生しているデータについては、文末に記入された条件を満たすレコードを「除かない」ということでしょうか? また、同様に重複しているデータが、文末の条件を「満たさない」場合にはどう扱うのでしょうか? ぱっと読んで見ての疑問です。 補足すればもっと「仕様」が具体的になるので、回答が得やすくなるでしょう。 ちなみに、重複レコードを扱う過去の類似質問を、参考まで。 dテーブルとmテーブルのリレーションについては、同様に過去問検索で容易に解決できると思います。 直ぐに回答が欲しいとの事なら、御質問の内容であれば、過去問検索が一番早いとも思います。

参考URL:
http://questionbox.jp.msn.com/qa5634616.html
takeshi33
質問者

補足

>重複が発生しているデータについては、...「除かない」ということでしょうか? そうです、重複データは評価のある最新日時のもののみ表示という意味です。 >同様に重複しているデータが、文末の条件を「満たさない」場合にはどう扱うのでしょうか? その場合は抽出しない考えでした。 わかりずらくてすいません;;

関連するQ&A

  • SQL SERVER 店舗毎のTOP10

    表題の件のSQLについてアドバイスお願いいたします。 DB:SQL SERVER 2008 R2 テーブル:売上伝票 カラム 店舗|伝票No|伝票日付|商品CD|商品名|数量|単価|金額(数量x単価) SELECT TOP 10 店舗NO, 商品CD, 商品名, SUM(数量) AS 販売数, SUM(金額)AS 販売金額 FROM 売上伝票 WHERE 伝票日付 BETWEEN [開始日] AND [終了日] GROUP BY 店舗NO,商品CD,商品名, ORDER BY 店舗NO,販売金額 DESC 当然ですが、上記のSQLでは、一番若い店舗NOのトップ10しか抽出できません。 店舗別、販売金額のトップ10を抽出するための、SQL文についてお教えください。

  • VB SQL文について

    VB6.0(SP5) XP SQL Sever7.0を使用しています。 テーブルからSQLより以下の条件で抽出しようとしています がいいSQL文が浮かびません。 TableA ----------------------- | sDate | nNumber | ----------------------- | 20030301 | 200 | | 20030301 | 250 | | 20030302 | 220 | | 20030302 | 225 | | 20030303 | 230 | ----------------------- 上記の内容で、一度読み込んで、内部テーブルに格納 したとします。TableAにデータ6、7が追加後に再度、 TableAを読んだときにデータ6、7だけ抽出したいのです が、いい方法ありますか? TableA ----------------------- | sDate | nNumber | ----------------------- | 20030301 | 200 | 1 | 20030301 | 250 | 2 | 20030302 | 220 | 3 | 20030302 | 225 | 4 | 20030303 | 230 | 5 | 20030303 | 240 | 6  ← 抽出したいデータ | 20030304 | 100 | 7  ← 抽出したいデータ ----------------------- ルール sDate :重複することあるが昇順になっている。 nNumber:sDateをキーにすると重複しない。 sDate+nNumberでみると昇順になっている。 よろしくお願いします。

  • SQLアドバイスください。

    テーブルA 項目名:ID(Key シーケンシャルカウント)、顧客ID(KEY)、管理NO、金額 (1) 01 0001 A001  5000 (2) 02 0001 A001 10000 (3) 03 0001 A001 10000 (4) 04 0001 A001 2000 (5) 05 0002 A001 4000 (6) 06 0003 A001 3000 (7) 07 0003 A001 3000 こういう状態のテーブルがあります。 (更新処理上で重複データが出来てしまいました) やりたい事はこの重複データが何件あるか?そしてその修正ですが、 (2)(3)と(6)(7)は重複です。抽出条件はなくただ前と同じデータが次のレコードに作成されたという事 この場合の重複データ件数は、2件になります。 修正後のテーブルはこうなりたいです。 (1) 01 0001 A001  5000 (2) 02 0001 A001 10000 (4) 04 0001 A001 2000 (5) 05 0002 A001 4000 (6) 06 0003 A001 3000 重複データが何件あるか?そしてその修正方法ですが、 PL/SQLを使用しないで出来ますか? やりかたを教えてください。

  • 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

  • SQLの書き方について

    以下の様なデータある場合 【Aテーブル】 ------------- NO,ITEM, KOSU ------------- 1 ,001 , 1 2 ,002 , 3 3 ,003 , 1 【Bテーブル】 ------------------- NO,NENDO,CODE,BIKO ------------------- 1,2006 , 1 , 1111 1,2007 , 0 , 1111 1,2007 , 2 , 1111 2,2007 , 0 , 2222 3,2007 , 0 , 3333 3,2007 , 1 , 3333 ------------------------------ NO,NENDO,CODE,BIKO,ITEM,KOSU ------------------------------ 1,2007 , 0 , 1111,001 , 1 2,2007 , 0 , 2222,002 , 3 3,2007 , 0 , 3333,003 , 1 と出力。(キーはNo) NO毎のかつ年度の降順、コードの昇順で最新の1件を 取得するにはどのようなSQLを作成したらよいのでしょうか?

  • ACCSESSのSQLで教えてください。

    すみません! SQL初心者なのですが教えてください。 下記のようなtableというテーブルなのですが こちらのテーブルをデータが増加しても(1)から(2)のように select表示させるにはどうすればよいか教えて頂けないでしょうか・・・。 何卒よろしくお願い致します。 テーブル名:table カラム名:NO,kigou (1) table |NO|kigou| |1 |a | |2 |b | |3 |c | |4 |d | |5 |e | ↓ (2) |NO1|kigou1|NO2|kigou2|NO3|kigou3| |1 |a |2 |b |3 |c | |4 |d |5 |e | ・・・

  • sql文のwhere句について

    <環境>sqlserver SQLでパラメータが空白であれば全件取得、パラメータに値が設定されている場合には 条件にHITするデータを抽出したいのですが、一本のクエリで抽出することができるのでしょうか? 空白時パラメータは以下のとおり入ってきます。 @no="" …完全一致 @name="%%" …部分一致 例) SELECT * FROM テーブル WHERE (NO = @no) and ((@name IS NULL) OR (@name IS NOT NULL) AND (NAME LIKE @name)) NAMEは上記クエリにて取得できています。 NOのところはどのようにすればよいでしょうか?

  • ACCESSクエリでの結合の仕方・・・SQL文かも

    ACCESS 2003を使用しています。 テーブルA テーブルB の2テーブルでクエリを作っています。 結合的には・・・ テーブルAのフィールドX ⇔ テーブルBのフィールドY です。 これで2テーブルに共通する一致データのみ抽出はできるのですが、 2テーブルに共通する一致データに加えて、 2テーブルの不一致データも一緒にクエリ表示されるようにしたいのです。 欲しいのは抽出イメージは、以下のような感じのクエリ結果です。 テーブルA:フィールドX|テーブルBのフィールドY a             |(空) (空)           |b c             |c d             |(空) (空)           |e f              |f  g             |(空) h             |h おそらく、SQL文を書く必要があるとは、想像できるのですが・・・ どなたか、ご教授いただけると助かります。 よろしくお願いします。

  • SQLの構文で質問です。

    いつもお世話になっております。 SQLの構文で質問です。 テーブルを開いて、データの中から日付を絞って抽出したいのですが、 whereの後にどのような記述をすればいいのかわかりません。 なんとなく『>』を使ってやってみましたがうまく抽出できませんでした。 例えば、2008/12/01~2008/12/31の絞りで抽出できるようにしたいのですが。 SELECT * FROM 日付 WHERE (日付   2008 / 12 / 01    2008 / 12 / 31) すみません、SQLを使い始めて間もなく本を見てはいるのですがうまくいかないもので。 宜しくお願いします。

  • SQL文が上手く記述できません・・。

    <<テーブル名:master>> SHOUHIN NO  KOSU ------- --- --------------- A       1   500 A       2   100 A       2   300 A       2   200 A       3   220 A       3   150 A       4   200 A       4   300 A       4   100 <<抽出結果>> SHOUHIN    NO1    NO2    NO3    NO4    GOUKEI -------    ---    ---    ---    ---    ------ A        500    600    370    600    2070 上記のmasterテーブルから、NO毎にKOSUの値を集計して 1レコードにまとめて下記の抽出結果のようにデータを抽出したいと 考えているのですが、なかなか上手くSQLを記述する事が出来ません・・・。 下記のような結果を抽出することは可能でしょうか? ご存知の方がいらっしゃれば、ご教授頂ければ幸いです。 宜しくお願い致します。