将具有相同列值的特定数量的记录插入到不同的表中

时间:2014-12-08 22:35:37

标签: sql sql-server

我们假设我有两个表tblProductstblPromoItems,它们都包含相同的记录类型。为简化起见,假设每条记录只有两个属性IDcreation_date。如何从tblProducts获取记录并插入tblPromoItems,以便只插入 n 总记录,并且只有 i 记录实例使用相同的creation_date

例如,使用下表,我将如何插入总共3条记录,条件是最多可以有2条具有相同creation_date的记录。

tblProducts

ID| creation_date

A | 2014-12-01

B | 2014-12-01

C | 2014-12-01

D | 2014-12-02

1 个答案:

答案 0 :(得分:0)

您可以row_number()使用common table expression每个日期获得2条记录:

with cte as (
  select *, 
    row_number() over (partition by cast(creation_date as date) 
                       order by creation_date desc) rn
  from tblProducts
  )
select * 
from cte
where rn <= 2

我不太清楚你的意思,只能​​输入n个记录。想必要限制插入表中的插入数量?一种方法是使用top - select top 100 ...