SQL Server:LEFT JOIN重复行

时间:2017-06-24 14:10:47

标签: sql-server

表:DataTable1

ID      SKU        QTY        
-----------------------
1       AAAA       1       
2       BBBB       1       
3       CCCC       1       
4       CCCC       1       

表:DataTable2

ID      assign_id   SKU
-----------------------------
123     99          AAAA 
124     99          CCCC 

有没有办法得到这样的结果?

提前谢谢。

ID      SKU        QTY     AssignID   
-----------------------------------
1       AAAA       1       99
2       BBBB       1       NULL
3       CCCC       1       99
4       CCCC       1       NULL

1 个答案:

答案 0 :(得分:0)

不确定,但可能这就是你需要的

with DataTable1(ID  ,    SKU  ,      QTY      ) as(
    select 1  ,'AAAA',     1  union all     
    select 2   ,'BBBB',    1  union all     
    select 3    ,'CCCC',   1  union all       
    select 4   ,'CCCC',    1    
),
DataTable2(ID ,     assign_id ,  SKU) as (
    select 123,     99       ,'AAA' union all
    select 124 ,    99       ,'CCC' 
)

select t.ID, t.SKU, t.QTY, case when rn = 1 then assign_id else null end as assign_id 
from (
    select DataTable1.*, DataTable2.assign_id, row_number() over(partition by DataTable1.SKU order by DataTable1.ID) as rn
    from DataTable1
    left join DataTable2
    on DataTable1.SKU like concat(DataTable2.SKU, '%')
) t