2017-06-24 16 views
1

表のJOIN:DataTable1SQL Serverの:LEFT重複行

​​

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

あなたが提示したデータを使用していません。 2つのテーブルには、どちらの方法でも論理的に接続するデータはありません。 –

+0

私はdistinct文とmax関数を使って結合を試みました。しかし、私は最初のテーブルの重複した '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

パーフェクト!あなたは私を助けてくれる。 SQL2008で(sku + '%' varchar)キャストするようにコンカットを変更しただけです – Brian