IDがnullのレコードの半分を選択する方法を理解しようとしています。その結果セットを使用して別のIDフィールドを更新しようとしているので、私は半分を望んでいます。次に、そのIDフィールドの別の値で残りを更新します。レコードの半分のみを選択する
本質的に私は更新したいフィールドのsomeFieldIDの2つの値の間で基本的に更新を分割する別の番号でsomeFieldIDレコードの半分を更新したい。
IDがnullのレコードの半分を選択する方法を理解しようとしています。その結果セットを使用して別のIDフィールドを更新しようとしているので、私は半分を望んでいます。次に、そのIDフィールドの別の値で残りを更新します。レコードの半分のみを選択する
本質的に私は更新したいフィールドのsomeFieldIDの2つの値の間で基本的に更新を分割する別の番号でsomeFieldIDレコードの半分を更新したい。
oracleでは、ROWNUMプsued列を使用できます。私はあなたがTOPを使用できるSQL Serverを信じています。 例:
select TOP 50 PERCENT * from table
あなたはパーセントで選択することができます。
SELECT TOP 50 PERCENT *fields* FROM YourTable WHERE ...
update x set [email protected] from (select top 50 percent * from table where id is null) x
次のSQLは、テーブルの最初の半分のcol_idsを返します。
SELECT col_id FROM table
WHERE rownum <= (SELECT count(col_id)/2 FROM table);
col_idsの総数が奇数である場合、あなたが得る前半 - 、例えば、我々は51件の合計の記録、カウント数(col_id)/ 2リターン25.5を持っているので、これは1、この結果に等しい丸はないので、25以下のすべてを得ます。つまり、他の26人は返されません。
しかし、私は逆の文の作業を見ていない:
SELECT col_id FROM table
WHERE rownum > (SELECT count(col_id)/2 FROM table);
あなたがテーブルの残りの半分をしたいのであれば、あなただけの一時テーブルに最初の結果を格納することができ、TABLE_Aそれを呼び出すことができます。それからちょうどこの表から、元のテーブルの上にMINUSの操作を行います。
SELECT col_id FROM table
MINUS
SELECT col_id FROM table_a
うまくいけば、これは誰かに役立ちます。
一番下の50%の種類はありますか?あなたが100レコードを持っていると言うように、ボトムは最後の50でしょうか? – PositiveGuy
Order by句を使用する –