初めて利用させていただきます。
-miru-と申します。
現在、
RDBMS:IBM DB2 7.2
OS:Windows 2000
なのですが、
タイトルの通り、
SELECT結果がSELECTできず困っています。
やりたい事の概要
YMD_DATAはDATE型です。
1.
SELECT YMD_DATA
FROM TEST.TEST_TABLE
WHERE YMD_DATA < '2004-10-15' AND
FLAG = '1'
ORDER BY YMD_DATA DESC
FETCH FIRST 30 ROWS ONLY
でFLAGが1且つ指定した年月日以前のデータを
新しいものから30件取得
2.
1で取得した結果の一番古い年月日(30個目のデータ)を
取得
と、いう感じなのですが、どうもうまくいきません。。
1つのSQLで書きたいのですが、これは可能でしょうか?
分かる方がいらっしゃいましたら、
ご教授お願いいたします。
失礼します。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
1.新しいもの順にRANKをつける
2.RANKが30以下(新しいもの30位まで)取得
3.順位が低い順に表示
4.1件のみ取得
"2."で同日のものがあった場合30ぴったしにはならないけど、欲しいデータは
「指定日にち内の30番目に新しいデータ行」
という解釈であればこれでいいんではないでしょうか?
----------------------------------------------
SELECT YMD_DATA, RNK
FROM
(
SELECT
--新しいもの順に順位をつける
YMD_DATA,RANK() OVER (ORDER BY YMD_DATA DESC) AS RNK
FROM
TEST.TEST_TABLE
WHERE
YMD_DATA < '2004-10-15'
AND FLAG = '1'
) as aaa
--新しいもの上位30件を取得
WHERE RNK <= 30
--順位が低い順に表示
ORDER BY RNK DESC
FETCH FIRST 1 ROWS ONLY
No.4
- 回答日時:
こんばんは。
>()の中の文でORDER BYを使うとダメになってしまう感じです。
そんな事はありませんよ。
DB2でも副問い合わせ式内で、ORDER BYは使えます。
って、マニュアルにはありますが・・・?
FROM句でダメなら、WHERE句に指定してみては?
大外で、逆ORDER BYとFETCH FIRST 1 ROWS ONLY
みたいな感じでは・・・?
(^^ゞ
No.3
- 回答日時:
DB2で確認できる環境が無いので想像で答えています。
以下の様に、最小の日付を取れば良いのではないでしょうか?
SELECT MIN(YMD_DATA)
FROM TEST.TEST_TABLE
WHERE YMD_DATA < '2004-10-15' AND
FLAG = '1'
ORDER BY YMD_DATA DESC
FETCH FIRST 30 ROWS ONLY
回答ありがとうございます^^
nukiさんに回答いただいたSQLだと
SELECT 文節、HAVING 文節、または ORDER BY 文節に指定された "YMD_DATA" で始まる式が、GROUP BY 文節に指定されていないか、あるいは GROUP BY 文節の指定されていない列関数のある SELECT 文節、 HAVING 文節、または ORDER BY 文節中に入っています。
と、いうエラーが出てしまいます。。
それでGROUP BY を追加すると、やっぱり1件にしぼられないのです。。
良回答ありがとうございましたM(__)M
No.2
- 回答日時:
select YMD_DATA from (
SELECT YMD_DATA
FROM TEST.TEST_TABLE
WHERE YMD_DATA < '2004-10-15' AND
FLAG = '1'
ORDER BY TAIS_YMD_DATA asc
FETCH FIRST 30 ROWS ONLY) tblTemp
order by YMD_DATA desc
でできないかな。
つまり最初に「YMD_DATA」をascで30件取る。で,さらに「YMD_DATA」をdescで1件取る。
なんてどうですか?
RDBMSていうのがどんなのか知らないんだけど。
この回答への補足
迅速な回答ありがとうございますm(__)m
"FLAG = '1'" に続いて予期しないトークン "ORDER" が見つかりました。入力が予想されるトークンには ")" が含まれている可能性があります。
と、エラーメッセージが出てしまいSQLが通りません;_;
すごくいけそうな予感がしたのですが。。
>最初に「YMD_DATA」をascで30件取る。
のところなのですが、YMD_DATAから
WHEREで指定した年月日以前で、新しいものを30件と取得したいので、descでないといけないかと思います。。
No.1
- 回答日時:
FROM の後ろにSELECT文を書けばよろしいかと
例えば
SELECT * FROM (SELECT * FROM テーブル WHERE 条件1)
WHERE 条件2
こんな感じで
この回答への補足
回答ありがとうございます^^
私も最初そう思いまして、そういう風に記述してみたのですが
"_DATA < '2004-10-15'" に続いて予期しないトークン "ORDER" が見つかりました。入力が予想されるトークンには ")" が含まれている可能性があります。
とエラーメッセージが出てしまいました。
何だか
SELECT * FROM (SELECT * FROM TABLE_NAME)
は()の中の文でORDER BYを使うとダメになってしまう感じです。
ORDER BY を()内で使用しない場合は通るのです。。
でも使用しないと正しい結果が得られないので、困っています。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
2024年は「名探偵コナン30周年」「涼宮ハルヒ20周年」などを迎えますが、 あなたが「もうそんなに!?」と驚いた○○周年を教えてください。
-
メモのコツを教えてください!
メモを取るのが苦手です。 急いでメモすると内容がごちゃごちゃになってしまったり、ひどいときには全く読めない時もあります。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
高校三年生の合唱祭で何を歌いましたか?
大人になると大人数で合唱する機会ってないですよね。 思い出すと、高校三年生の合唱祭が最後でした。 そこで、みんなの思い出の合唱曲を知りたい!
-
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
エクセルのフィルタ抽出が固まる
-
警察はスマホに保存した動画や...
-
CSVファイルでテキストの改行の...
-
ACCESSのSQLで、NULLかNULLでな...
-
最新の日付とその金額をクエリ...
-
更新クエリをリンクデータベー...
-
未来の発掘者
-
20万行あるデータを動かしたい
-
DAOファイルのSQLクエリの部分...
-
データベース用語「実表」の読み方
-
Accessを開きなおすとテキスト...
-
AccessのSQLで、FROM句の構文エ...
-
顧客データベースを作る場合、...
-
シートが異なるセル同士を、相...
-
Access フォーム上でコンボボッ...
-
テキストボックスにコントロー...
-
Notion@リレーション値の取得...
-
Accessフォームで平均値の出し...
-
テキストで空欄(null?)を検索...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessで最新のレコード...
-
SELECTした結果をSELECTしたい!
-
クエリ式でDcount の代わりは?
-
年、月、日を取得する関数
-
MySQLでもPHPでも出来る処理は...
-
SQLについて教えてください
-
pl/pgsqlで再帰呼び出しは可能...
-
SQL結果に序列を付けるには??
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
sqlに記述できない文字
-
オラクルのUPDATEで複数テーブル
-
truncate tableを使って複数の...
-
既存データをINSERT文にして出...
-
UPDATEで既存のレコードに文字...
-
PostgreSQLのtimestamp型で時間...
-
エラーを起こす方法
-
SELECTした結果に行番号を求めたい
-
SQLで、Join句で結合したテ...
おすすめ情報