2017-07-04 4 views
1

私の要望は何ですか?私は私が別のproductidの顧客があるかどうかを確認する必要がある場合、私は彼らがproducttypeを持っているかどうかをチェックする必要がありますか?もしcustomeridのいずれかがNULLのproducttypeを持っている場合は、両方ともcustomeridはN elseでなければなりません。同じ銘柄で異なる商品がある場合はどのようにシングルフラグを入れるのですか

たとえば、私は多くの列を持つテーブルを持っています。 PFB私が何をしたいテーブルstucture

Customerid productid producttype 

    1    a    x 
    1    b   Null 
    2    c    y 
    2    d    y 
    3    e    z 
    3    f   Null 

は、以下のようなものです:

Customerid Productid Productype flag 

1    a   x   N 
1    b   Null   N 
2    c   y   Y      
2    d   y   Y 
3    e   z   N 
3    f   Null   N 

今まで私はこのことから

;with cte as 
(

select * from test where customerid in 

(select customerid from test group by customerid having count(*) >1 

)) 

を行っている私は1、より多くを持っているすべての得意先を収集しますproductidと異なるproducttpe今私はフラグの部分を追加したい。

このアプローチが良いかどうか、次のことをどうすれば達成できるか教えてください。

ありがとうございます!

答えて

2

あなたは正しい方向にあります。私はCTEを使用しましたが、より少ない複雑な内部クエリを使用しました。 これを試してみてください:

Create table #temp(Customerid int, productid varchar(1), producttype varchar(1)) 
insert into #temp values 
    (1,'a','x'), 
    (1,'b',Null), 
    (2,'c','y'), 
    (2,'d','y'), 
    (3,'e','z'), 
    (3,'f',Null) 


;with cte as 
(
select distinct customerid, 'T' as tempflag from #temp where producttype is null 
) 
Select b.*, 
case a.tempflag when 'T' then 'N' else 'Y' end as Flag 
from cte a 
right join #temp b 
on a.customerid = b.customerid 

は出力:それは働くあなたの助けのための

Customerid productid producttype Flag 
----------- --------- ----------- ---- 
1   a   x   N 
1   b   NULL  N 
2   c   y   Y 
2   d   y   Y 
3   e   z   N 
3   f   NULL  N 
+1

感謝:) – Amitesh

関連する問題