問題タブ [rownum]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - Oracle を Mssql に変換する必要がある
mssqlに疑問があります。上記の oracle クエリを mssql に移行する必要があります。私は苦労していROWNUM
ます。
sql - rownum() を db2 から Oracle に変換する
良い一日、
データベースがすでに DB2 から Oracle に変更されているため、一部のプログラム コード (主に SQL コード) を変更したいと考えています。
これは私が成功した例の1つですが、私はそれについてよく理解していません.Googleからそれを見つけることはできません.
以下は、元の SQL クエリ コードです (DB2 を使用)。
私が編集した後のSQLクエリコードは次のとおりです(Oracleからデータを正常に取得できます):
私が分析したように、 を に変更しなかった場合、エラーが発生します。エラーは です。したがって、に変更rownum
します。DB2のキーワードである必要があると思います。Oracle にもこのようなキーワードはありますか?rownum1
ORA-00923: FROM keyword not found where expected
rownum1
rownum
行 4 の最後の部分では、DB2 コードから、 で終わりAs tname
ます。同じことをOracleコードに入れると、エラーが発生しますORA-00933: SQL command not properly ended
。したがって、私は消去しAs
ます。意味がよくわかりませんAs tname
. 括弧内の SQL クエリとして:
それは私に2列を返すのでAs tname
、2列との相互作用がどのようになっているのかわかりません。
親切なアドバイス。
sql - 上位 3 つの rownum を取得するためのサブクエリが pl/sql で機能しない
このコードは機能しません:
行 2 のエラー: ORA-06550: 行 2、列 17: PLS-00103: 次のいずれかを予期しているときに、記号 "SELECT" が検出されました: ( ; is return 記号 "is" が "SELECT" の代わりに使用されました。
macros - SAS マクロ解決呼び出し symputx (現在の行を取得)
私は SAS 9.2 を使用しており、次のコードを取得しました。
レコードごとに行番号を取得し、それを別のマクロ変数と組み合わせたいと思います。rownum は、foplist データセット内のレコードの行番号を表示します。何らかの理由で、データセットの最後の番号を常に取得します (おそらくマクロのコンパイルのためですか?)
例: A --- rownum=1 B --- rownum=2
rownum=2 しか得られない
それを修正する方法はありますか?
ありがとう!
sql - SQL EXISTS なぜrownumを選択すると実行計画が非効率になるのですか?
問題
これら 2 つの Oracle Syntax Update クエリのわずかな違いのように見えるものが、根本的に異なる実行計画を引き起こしている理由を理解しようとしています。
クエリ 1:
クエリ 2:
ご覧のとおり、2 つの唯一の違いは、クエリ 2 のサブクエリがすべての行の値ではなく、rownum を返すことです。
これら 2 つの実行計画は、これ以上の違いはありません。
Query1 - 両方のテーブルから合計結果を取得し、並べ替えとハッシュ結合を使用して結果を返します。これは、有利な 2,346 コストでうまく機能します (EXISTS 句と結合サブクエリを使用しているにもかかわらず)。
クエリ 2 - 両方のテーブル結果も取得しますが、カウントとフィルターを使用して同じタスクを実行し、驚くべき 77,789,696 コストの実行プランを返します! 彼のクエリは私にかかっているだけなので、実際にはこれが同じ結果を返すとは確信していません(そうあるべきだと思いますが)。
Exists 句についての私の理解では、これはメイン テーブルの行ごとに実行される単純なブール値チェックです。EXISTS 条件で単一の行が返されるか、100,000 行が返されるかは問題ではありません...実行されている行に対して結果が返された場合、存在チェックに合格しています。では、サブクエリの SELECT ステートメントが何を返すかが問題になるのはなぜでしょうか?
- - - - - - - - - - 編集 - - - - - - - - - - -
リクエストごとに、以下は TOAD で実行している実行プランです... 上記の例ではテーブル名を簡単に編集したことに注意してください。
また、言及する必要がありましたが、この時点では2つのテーブルのどちらにもインデックスがありません..まだtempTableに追加しておらず、フィールドとデータのみを含みインデックスを含まないsalesテーブルの安価なコピーでテストしています、制約またはセキュリティ。
みんな助けてくれてありがとう!
クエリ 1 実行計画
クエリ 2 実行計画
------------------------------------------------
質問
1) rownum の呼び出しによって実行計画が変更されたのはなぜですか?
2) 信じられないほど非効率なフィルターの原因は何ですか?
3) この変更の原因となっている Exists 句の動作方法に根本的な何かが欠けていますか?
sql - Oracle: ポイント A から X 行を取得する
特定の構成に添付された項目のリストを取得するストアド プロシージャがあります (各項目は 1 つの構成に添付されています。そうでない場合 (つまり、フィールドがNULL
)、デフォルト構成に添付されていると見なされます (そのフィールドISDEFAULT
は1
) . ページネーションを使用してアイテムを取得したい.ROWNUM
フィールドが1から始まることを思い出したので、私は書いた.
このリクエストで返された結果はゼロでした。
私はそれを次のように変更しました:
そしてそれは働いた!ステートメントにを追加するROWNUM
と、SELECT
問題が修正されました。
それから私は試しました:
SELECT *
私はステートメントを書き戻し、を- 1
比較演算子の反対側に移動しました (したがって、それらは になりました+ 1
)。これも同様に機能します。
私の最初のクエリが機能せず、結果がゼロになるのに対し、他の2つは魅力的に機能する理由を誰かが説明できますか?
oracle - Oracle 9 PL/SQL - サブクエリなしで order by を使用して最初の行を取得する方法
「制限する方法」または「最初の行を取得する方法」が何度も投稿されていることは知っていますが、特定の問題の解決策が見つかりません。
ビン番号と数量を含む在庫バランス表があります
行に最高の数量を含むビン # が必要です
実際のクエリはこれよりもはるかに大きく複雑ですが、この例は私が直面している問題を示しています
私が最初にやった
これは、数量が最も多い「ビン」が 1 つしかない場合に機能します。
数量が 10 (最高数量) の同じアイテムに 2 つのビンがある場合、サブクエリは 2 行を返し、Oracle エラーをトリガーします。
それから私はこれを試しました:
from (...) 内では item_table.itemnumber への参照が無効であるように見えるため、これは機能しません。そうしようとすると、「列名が無効です」というエラーが表示されます。
「OLAP ウィンドウ関数」がデータベースでアクティブ化されていないように見えるため、ROW_NUMBER() を使用できません。