No.4ベストアンサー
- 回答日時:
>とやった場合の結果から、エイリアスの「etc_count」を検索条件に使う事って出来ないんですか?
出来ないと思います。(さすがに自宅にOracleを持っているわけではないので、試せないのですが。)
グルーピングしてから、HAVINGで(エイリアスではなく式の方を)指定すれば、ひょっとしたら何とかなるかもしれないです。
ですが、この方法だとパフォーマンス的に問題があるかもしれませんね。
nが少ない数でしたら、素直にn行フェッチした方が速い気はしますね。
或いは ADOかoo4oでMOVEするか… っていうか、それ位しか思いつきませぬ(汗
項目に増減のないマスタ項目などで、かつ頻繁に検索するのなら、一旦クライアントにno列を全件取り込んでから… ってのもありかも。
エイリアスで検索は、やっぱしダメですか。。
そもそも、一件のSQL文で条件指定で絞り込みまくって結果を取得しようというのが間違いでした。。
よくよく考えてみれば、別の手段でやればって感じですね(^^);
いろいろ回答してもらってありがとうございました。
No.5
- 回答日時:
ご参考までに
Oracleであればトップnクエリというのができます。
例)etcが'1'でno順にソートし上位10レコードのみ抽出する
select rownum, no, name, etc from table
where etc = '1' and rownum <= 10
order by no
;
ただし以下の命令で10位の情報を得ることはできません。
この命令では行を返しません。
理由は、1行目はrownum=1なので条件に合わずrownumがカウントアップされず、2行目以降もすべて条件にあわないためです。
select rownum, no, name, etc from table
where etc = '1' and rownum = 10
order by no
;
回答ありがとうございました。
やりたかった事が、rownum = 5の条件にヒットするものを取得したいってゆう感じなのでした。。
ですので、別の手段で行おうと思います。
いろいろ考えてもらって、ホントにありがとうございました。
No.3
- 回答日時:
#2, tksoftさんの回答が正解かと思いますが、Accessなら、Top句がありますよね。
SELECT TOP 1 *
FROM 表
WHERE etc = '1'
ORDER BY no DESC;
こんな感じです。Access限定ですが(^^;
この回答への補足
回答有難うございます。
すみません。。
これも書き忘れていました。。
DBはOracle9iでした。。
一つお伺いしたいのですが、
例えば、
SELECT no, name, etc, ROW_NUMBER() OVER (PARTITION BY etc ORDER BY no) AS etc_count FROM 表名 WHERE etc = '1';
とやった場合の結果から、エイリアスの「etc_count」を検索条件に使う事って出来ないんですか?
再度の回答、宜しくお願い致します。
No.2
- 回答日時:
「一番最後のデータ」という意味がちょっと不明ですが、とりあえずnoの一番大きいデータというふうに解釈します。
SELECT no, name, etc FROM TableName
WHERE etc = 1
AND no IN (SELECT MAX(no) FROM TableName)
と、いうのはどうでしょう。
ポイントはIN句です。
この回答への補足
すばやい回答有難うございます。
私の説明間違いで、少し書き足りない部分が在りました。。
表.
no name etc
0001 aaaa 1
0002 bbbb 1
0003 cccc 2
0004 dddd 1
0005 eeee 2
0006 ffff 1
のようなテーブルの時に、no=0004のデータのみを抽出したいのです。
決して最後のデータを取りたいというわけではなく、
ある基準のデータから、etc=1かつX番目のデータを抽出したいという感じです。
私の説明が言葉足らずになってしまったのですが、
こういう場合だとどうなるんですか?
度々で申し訳ありませんが、宜しくお願い致します。
No.1
- 回答日時:
noは連番なんですよね?
でしたら、
SELECT MAX(no),name,etc
FROM テーブル名
WHERE etc = 1
GROUP BY name
ではダメですか?
この回答への補足
すばやい回答有難うございます。
私の説明間違いで、少し書き足りない部分が在りました。。
表.
no name etc
0001 aaaa 1
0002 bbbb 1
0003 cccc 2
0004 dddd 1
0005 eeee 2
0006 ffff 1
のようなテーブルの時に、no=0004のデータのみを抽出したいのです。
決して最後のデータを取りたいというわけではなく、
ある基準のデータから、etc=1かつX番目のデータを抽出したいという感じです。
私の説明が言葉足らずになってしまったのですが、
こういう場合だとどうなるんですか?
度々で申し訳ありませんが、宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAで重複データを合算したい(時間) 1 2022/12/08 23:06
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- PHP PHP MySql ページング 2 2022/09/20 06:38
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- Excel(エクセル) Excelの関数でこんな処理ができますか 1 2023/02/08 13:46
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- PHP phpでこの記述をもっと簡単に書く方法はないでしょうか…? 3 2022/11/16 19:57
- Visual Basic(VBA) SQLで抽出 4 2022/12/04 13:55
- Excel(エクセル) VBAで、シート間の転記するコードを教えてください。 4 2023/03/26 10:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
大文字/小文字の区別しないで検...
-
OR と IN の違い
-
ビュー情報(user_views)の参...
-
1、Rstudioで回帰直線を求める...
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
access2003 クエリSQL文に...
-
for whichの使い方
-
外部参照してるキーを主キーに...
-
SELECT 文 GROUP での1件目を...
-
INSERT文でフィールドの1つだ...
-
Access:クエリーにて集計後に...
-
SQLServerで文字列の末尾からあ...
-
1日に1人がこなせるプログラム...
-
SQLで特定の項目の重複のみを排...
-
SQLで列名を変数にできないでし...
-
datetime型でNULL値を入れたい。
-
SQL文で、合計が0のレコードを...
-
EXISTSを使ったDELETE文
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
OR と IN の違い
-
ビュー情報(user_views)の参...
-
sql文のwhere句について
-
大文字/小文字の区別しないで検...
-
コンパイルエラーが出ます。助...
-
検索対象のデータが「複数レコ...
-
最新から100行のSELECT文
-
SQL xx件目からxx件目まで...
-
PL/SQL デバック方法:入力を受...
-
階層問い合わせで重複レコード...
-
sqlのテーブル名省略について
-
クエリの書き方(アクセスでも...
-
Oracle SQLの、where句内の条件...
-
SQLの書き方について教えてくだ...
-
表の作成日時はわかりますか?
-
SQL 任意 指定 並び替え
-
一つのSQLにできませんか??
-
Oracle内で作成したFunction、V...
-
SQLについて
-
MAX日付のSQLについて
おすすめ情報