初めて利用させていただきます。
-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.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 を()内で使用しない場合は通るのです。。
でも使用しないと正しい結果が得られないので、困っています。。
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.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.4
- 回答日時:
こんばんは。
>()の中の文でORDER BYを使うとダメになってしまう感じです。
そんな事はありませんよ。
DB2でも副問い合わせ式内で、ORDER BYは使えます。
って、マニュアルにはありますが・・・?
FROM句でダメなら、WHERE句に指定してみては?
大外で、逆ORDER BYとFETCH FIRST 1 ROWS ONLY
みたいな感じでは・・・?
(^^ゞ
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
このQ&Aを見た人はこんなQ&Aも見ています
-
風水の観点で選ぶ観葉植物とは?置き場所や上げたい運気ごとの注意点を紹介!
観葉植物で運気をアップするコツを、風水デザイン1級建築士の福島昌彦さんに伺った。
-
SQL文の入れ子について
MySQL
-
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
-
4
GROUP BYを行った後に結合したい。
Oracle
-
5
キーが同じを複数行を1行にまとめるには?
Oracle
-
6
GROUP BYでエラーが発生
SQL Server
-
7
count(1)とcount(*)の違い
Oracle
-
8
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
9
group byで指定したカラム以外のカラムの値を取得したい
PostgreSQL
-
10
SELECTの結果で同一行を複数回出力する
Oracle
-
11
テーブルの最後(最新)のレコードを抽出したい
MySQL
-
12
SELECT文で、指定カラム以外の全カラムを一括指定って可能でしょうか
MySQL
-
13
空白文字を含む文字列データの検索
SQL Server
-
14
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
15
SQLで部分的にGROUP BYしたいとき
Oracle
-
16
SQL文で右から1文字だけ削除するやり方
MySQL
-
17
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
18
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル
-
データベースファイル(.db)を開...
-
警察はスマホに保存した動画や...
-
縦書きテキストボックスの表示"...
-
ファイルが壊れて読み取れませ...
-
データベースソフトの「TCARD f...
-
android版のMs accessはありま...
-
DBのタイプの指定とサイズにつ...
-
リスト形式の表とデータベース...
-
c言語の問題です。これを踏まえ...
-
「1004:アプリケーション定義...
-
Notion@リレーション値の取得...
-
Accessのリンクテーブルについて
-
CDデータ 泣き寝入りするしか...
-
Accessを開きなおすとテキスト...
-
googleフォームでインストール...
-
コンピュータ用語、データベー...
-
旧filemakerで和暦(令和など)...
-
QSL でのフォーム画面作成について
-
QRコードとバーコードについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECTした結果をSELECTしたい!
-
Accessで最新のレコード...
-
MySQLでもPHPでも出来る処理は...
-
pl/pgsqlで再帰呼び出しは可能...
-
年、月、日を取得する関数
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
sqlに記述できない文字
-
UPDATEで既存のレコードに文字...
-
テーブル名が可変の場合のクエ...
-
エラーを起こす方法
-
オラクルのUPDATEで複数テーブル
-
truncate tableを使って複数の...
-
結合したテーブルをSUMしたい
-
Accessで今日から5日後
-
既存データをINSERT文にして出...
-
timestampのデータはどのように...
-
SQLで、Join句で結合したテ...
-
PostgreSQLのtimestamp型で時間...
おすすめ情報