2017-01-13 29 views
0

我已经在网上找到答案,但没有具体说明我在做什么。我无法得到任何工作。如何将此select语句转换为SQL Server中的插入表?

我有一个选择,随机选择记录,我只是希望能够将它插入到表中。

我的SQL是

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

+0

你应该把额外的'DIVISION'过滤器放在CTE里面。但是,现在你会遇到问题,因为这两个“OR”条件需要放在括号内。 – shawnt00

回答

1

你只需要添加一个INSERT语句。

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

相关问题