2017-06-24 74 views
1

表:DataTable1SQL服務器:LEFT JOIN重複行

​​

表: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 
+0

你可以分享你嘗試過到現在? –

+1

不使用您提供的數據。兩張表中沒有任何數據以任何方式將它們以邏輯方式相互連接,更不用說您希望的輸出顯示的方式。 –

+0

我試着用不同的語句和最大函數進行左連接。但是由於第一個表的重複'SKU'列,我只能得到3行。 – Brian

回答

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 
+0

完美!你救我。只有我改變了concat才能在SQL2008中投射(sku +'%'varchar) – Brian