更新数据以将其集成到我的数据仓库中
Updating data to integrate it in my datawarehouse
我从客户那里收到销售数据,将其整合到他的数据仓库中。通常有两列来定义销售行 - num_transcation
和 num_line_transaction
。但是我收到了很多具有相同 num_transcation
和 num_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_transcation
和 num_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;
我从客户那里收到销售数据,将其整合到他的数据仓库中。通常有两列来定义销售行 - num_transcation
和 num_line_transaction
。但是我收到了很多具有相同 num_transcation
和 num_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_transcation
和 num_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;