3
對於insert ... select
語句,是否有一種方法可以忽略select語句所需但應該插入的變量?如何忽略INSERT SELECT語句中的中間列?
我正在使用rank
函數來選擇哪些數據到insert
。不幸的是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, Level 15, State 1, Line 1 The select list for the INSERT statement contains more items than the insert list. The number of SELECT values must match the number of INSERT columns.
我知道我可以使用臨時表做到這一點,但想如果可能的話,以保持它在單個語句。
希望避免在子查詢複製的一切,但如果沒有人有其他更好的建議來了,我會接受那。 –
@ChipMcCormick - 您**需要**爲您的'WHERE'子句使用CTE或派生表才能工作。你不能在'WHERE'中引用列別名,也不能在'WHERE'中直接引用'RANK()'。 –