更新数据以将其集成到我的数据仓库中

Updating data to integrate it in my datawarehouse

我从客户那里收到销售数据,将其整合到他的数据仓库中。通常有两列来定义销售行 - num_transcationnum_line_transaction。但是我收到了很多具有相同 num_transcationnum_line_transaction 的行,所以当我执行此查询时:

select * 
from 
    (select 
         ROW_NUMBER() over(partition by ll_vente_num_transaction, ll_vente_num_ligne_transaction 
                           order by ll_vente_num_transaction) rn, * 
     from my_table) t
where 
    rn > 2 

我得到将近 43000 行具有相同的身份(num_transcationnum_line_transaction),唯一不同的是销售日期。

我需要一种方法来更新 "num_line_transaction" 以便能够在数据仓库中加载数据,否则它将只加载每个 "num_transcation" 和 "num_line_transaction" 组合的一行。

例如:

+-----------------+-----------------------+
| NUM_TRANSACTION | NUM_LIGNE_TRANSACTION |
+-----------------+-----------------------+
|       106969796 |               3148291 |
|       106969796 |               3148291 |
|       106969796 |               3148291 |
|       106969796 |               3148291 |
|       106969796 |               3148291 |
|       106969796 |               3148291 |
|       106969796 |               3148291 |
+-----------------+-----------------------+

我需要将这些行更新为:

+-----------------+-------------------------+
| NUM_TRANSACTION |   NUM_LIGNE_TRANSACTION |
+-----------------+-------------------------+
|       106969796 |                 3148291 |
|       106969796 |                 3148292 |
|       106969796 |                 3148293 |
|       106969796 |                 3148294 |
|       106969796 |                 3148295 |
|       106969796 |                 3148296 |
|       106969796 |                 3148297 |
+-----------------+-------------------------+

拜托,任何想法将不胜感激。我被困在这里了。

如果您有区分(唯一列,例如您提到的 sales_date),以下语句将有所帮助:

with t2 as
(
select t.*,
       row_number() over (partition by num_transaction order by num_ligne_transaction)+
       num_ligne_transaction - 1
        as rn 
 from tab t
)
update t1
   set t1.num_ligne_transaction = t2.rn
  from tab t1
  join t2
    on t1.num_transaction = t1.num_transaction
   and t1.sales_date = t2.sales_date;

Demo