2017-01-13 12 views
0

私は答えをオンラインで見つけましたが、具体的には何もしていません。私は働くことが何もできませんでした。このSELECT文をSQL Serverの挿入テーブルに変換するにはどうすればよいですか?

私はレコードをランダムに選択するselectを持っています。代わりにテーブルに挿入できるようにしたいだけです。

私のSQLは私がDIVISIONによりDIVISIONの順序によって、パーティションを行うことになっておりません知っている

with data as (
select *, row_number() over (partition by DIVISION order by DIVISION) as rn 
    from WORK 
) 
select * 
from data 
where rn <= @randomNumber or (rn - @randomNumber) % 18 = 1 AND DIVISION != 4; 

であるが、それは、私は信じている別の問題です。

は、私は別のテーブルのWORK_CLEANあなただけのINSERT文を追加する必要が

+0

おそらくCTEの中に余分な 'DIVISION'フィルタを置くべきでしょう。しかし、2つの「OR」条件がかっこ内にある必要があるため、問題が発生します。 – shawnt00

答えて

1

にこのデータを挿入できるようにする必要があります。

with data as (
select *, row_number() over (partition by DIVISION order by DIVISION) as rn 
    from WORK 
) 
insert yourTable ([ColumnsHere]) 
select * 
from data 
where rn <= @randomNumber or (rn - @randomNumber) % 18 = 1 AND DIVISION != 4; 
+0

これをすべての列にする方法はありますか?この場合*を使用できますか?テーブル構造は100%同一です。 – rohanharrison

+0

*を使用することもできますが、明示的に列の名前を付けることをお勧めします。列のリストをスキップすることはできますが、いずれかのテーブルで何か変更があった場合は、コードが壊れています。 –

+0

私はこれを使用しようとするたびに、私が選択したどのテーブルでも無効なオブジェクトであることがわかります。 – rohanharrison

関連する問題