对于一个“插入...选择”语句,是否有一种方法可以忽略在选择语句中需要的但应该被插入的变量?
我正在使用rank函数来选择要插入的数据。不幸的是,rank函数不能在where子句中调用。
结果是以下错误:
我正在使用rank函数来选择要插入的数据。不幸的是,rank函数不能在where子句中调用。
insert into target_table(v1
,v2
,v3
)
select v1
,v2
,v3
,RANK() over (partition by group_col
order by order_col desc
) as my_rank
from source_table
where my_rank > 1
结果是以下错误:
我知道可以使用临时表来完成,但如果可能的话,我希望将其保留在单个语句中。Msg 121,级别15,状态1,第1行插入语句的选择列表包含比插入列表更多的项。 SELECT值的数量必须与INSERT列的数量匹配。
WHERE
子句工作。你不能在WHERE
中引用列别名,也不能直接在WHERE
中引用RANK()
。 - Martin Smith