• 締切済み

SQL文で教えてください。

次のようなデータがあったとします。 HANCD,KOKCDは主KEYで、すべてStringです。 HANCD|KOKCD|DAY1|DAY2|DAY3|DAY4 0001|000001|20081001|20080928|20080930|20081003 0001|000002|20081210|20080925|20081030|20081015 0002|000001|20080911|20080918|20081005|20081002 0002|000003|20080917|20080925|20080928|20081012 0003|000003|20081006|20081210|20081210|20081002 0003|000004|20081011|20080923|20081013|20080926 上記6人のレコードでDAY1~DAY4の中でDAY3が最大である人の 結果を返すSQL文がわからなくてこまっています。 MAXは使えないし・・・。 回答としては HANCD|KOKCD 0002|000001 0003|000003 0003|000004 が結果として返ってくるSQL文です。 よろしくお願いいたします。

みんなの回答

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

DAY3が最大 と考えると難しいのかな?  DAY3 >= DAY1  かつ  DAY3 >= DAY2  かつ  DAY3 >= DAY4 と考えると簡単でしょう?

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

関連するQ&A

  • SQL文の書き方

    SQLを勉強しています。 レコードの中で指定フィールドの文字列が、指定文字から始まるレコードを取り出したいのですがSQL文の書き方がわかりません。 例) 1, AAA 2, BBB 3, CCC 4, ABC 上記の4つのレコードから"A"から始まるレコードを取り出したい。 結果は[1, AAA]と[4, ABC]が欲しいのです。

  • SQL文の構築について教えてください。

    SQL文の構築について教えてください。 こんばんは。Oracle9iのデータベース検索で、どうしてもSQLが思い浮かばないため、質問させていただきます。 ■Table ID    NUM   SIGN 100   1    A 100   2    A 101   1    A 102   1    B 103   1    B 104   1    C 首キーはID、NUMです。 上記のようなテーブルで、 IDが同一かつNUMが最大のもので、 SIGNが同一のレコードで、2件以外のレコードを抽出したいです。 (例表でいうと、ID104のレコードのみが抽出されるようにしたい) すこし急ぎなんですが、SQLが得意でお時間がある方、力を貸していただけないでしょうか。 よろしくお願い致します。

  • SQL 特定のカラムが最大値のレコード取得

    初心者です。SQL文で困っています。 どなたかご教授頂けたらと思います。 環境は、SQL SERVER 2000です。 特定のカラムが最大値のレコードのみ取得したいです。 たとえば、以下のようなデータがあるとします。 コード、履歴番号で主キーとします。 コード|履歴番号 |金額 0001 | 1 | 12000 0001 | 2 | 12001 0001 | 3 | 12002 0002 | 1 | 12000 0002 | 2 | 12001 0002 | 3 | 12002 0003 | 1 | 12000 0003 | 2 | 12001 この場合に、コード毎に履歴番号が最大のレコードのみを取得したいです。 理想の結果は以下になります。 コード|履歴番号 |金額 0001 | 3 | 12002 0002 | 3 | 12002 0003 | 2 | 12001 以上です。よろしくお願いいたします。

  • SQL文について

    こんにちは! 皆様に教えて欲しいことがあります。 DBの中のデータで、一番年齢が高い人の名前を取得してくるときってどんなSQL文を書けばいいんでしょうか? 一番高い年齢を取得、なら select Max(年齢) from DB でいいと思うんですけど、一番年齢の高い人の名前、となると、どうやってとってくるのかわかりません。 where文で「having max(年齢)」ってやったんですけど、エラーが出て実行できませんでした。 今作ってるSQL文は、DB二つから他の条件も含めてselectしているので、他の理由でエラーになってるのかもしれませんが・・・。 職場にSQLがわかる人がいないので、誰にも聞けません。 もしわかる方がいらっしゃいましたら、教えてください。 宜しくお願いします。

  • レコードの有無をすばやく検索するSQL文

    初歩的な質問で申し訳ありません。 テーブルAの中に、キー1が100から109までのキーを持つレコードがあるかないかを調べるSQL文を教えてください。 テーブルA キー1 キー2 100   1 100   2 105   1 107   1 上記の場合結果は 100  有り 101  なし 102  なし 103  なし 104  なし 105  有り 106  なし 107  有り 108  なし 109  なし と表示したいのです。 よろしくご教授ください。

  • PL/SQLの戻り値について

    現在正規化されていないテーブルを、PL/SQLを使って集計したいと考えています。以下のような構造にしたいと思うのですが、可能でしょうか? 1.正規化されていないテーブルのデータを正規化されたテーブル(テンポラリーテーブル)へ転記 2.テンポラリーテーブルテーブルのデータを集計(GROUP BYなどで) 3.2の結果を戻す 上記1~3までをすべてPL/SQLで実行し、その結果を取得したいです。 なお取得する結果としては、  キー,集計値1,集計値2    ・    ・    ・ というような構造で、複数レコードあります。 つまり、通常のSELECT文で返ってくる値を、PL/SQLで戻したいと考えています。

  • 該当するSQL文を教えてください。

    該当するSQL文を教えてください。 SQL超初心者です。 指定した条件にマッチする「次のレコード」を取得(または表示)させるための SQL文を教えてください。

  • SQL文で・・・

    こんにんちは。ご多忙だと思いますが回答宜しくお願い致します。 今、VBのソースを見ているのですが(VB初心者)、SQL文を作成している 部分があるのですが、ちょっとわかりません。 w_st_sql = "SELECT * FROM AAAA WHERE (K1 || K2 || K3) = " & "'" & p_st_key & "'" 上記のソースは(自分なりに解析したんですが)、テーブルAAAAのレコードで 変数p_st_keyの値がフィールドK1, K2, K3のどれかに当てはまるすべてのフィールドを取得する考えでよろしいのでしょうか? わからない部分は"(K1 || K2 || K3)"です。 すごく簡単な事かもしれませんが宜しくお願い致します。

  • SQLがわからないです

    kid | id | name | day | tday | 1 | 1 | 松 | 25 | 1 | 2 | 谷  | 15 | このようなデータがあったとして、それぞれのMAX(day)を出力する場合どうしたらいいでしょうか?? $sql2 = 'SELECT kid,id,name,MAX(day),tday FROM em WHERE kid='.$_SESSION["kid"].'' ; これだと松さんのデータしか出力されないし、MAXを外すと、例えば松さんのデータが二個あり出力した場合、松(25)松(18)谷(15)と出力されてしまいます。 希望は 松(25)谷(15) それぞれの最大値です。

    • ベストアンサー
    • MySQL
  • SQL文について質問があります。

    PostgreSQLのSQL文で質問があります。 kekktaテーブルの構成 ---------------------- name:varchar(64) score : int 4 day : date ---------------------- 現在kekkaテーブルには以下のレコードが格納されています。 ------------------------------- yamada| -2|2003-04-30 yamada|-16|2003-05-01 yamada| 3|2003-05-02 yamada|-23|2003-05-02 honda |-12|2003-05-10 yamada| 12|2003-05-15 yamada| -6|2003-05-20 yamada| -8|2003-06-01 ------------------------------- このレコードで 2003年5月のyamadaさんのレコードの最新日付からの scoreの合計を取得したいと考えています。 ---------------------------------- select name, sum(score) from kekka where name='yamada' and day like '2003-05%' group by name offset 0 limit 4; (このSQLはもちろんうまくいきません) ---------------------------------- <出力したい結果> name | sum(score) --------------------- yamada | -14 です。 SQLがうまくできません。 宜しくお願いいたします。

このQ&Aのポイント
  • 料金払い込み用紙(はがき)を開く際、折り目からから破けてしまった。きりはなさないで‥とあったが、そのまま使用できるか?
  • 料金払い込み用紙(はがき)を開封したら、折り目から破けてしまいました。このまま使用することは可能なのでしょうか?
  • 料金払い込み用紙の開封時に折り目から破けてしまいました。しかし、使用に問題はないのでしょうか?
回答を見る