让我解释一下我的要求是什么。我需要检查我是否有不同productid的客户,如果是,那么我必须检查他们是否有任何producttype null或者如果任何customerid有NULL producttype然后标志为customerid应该是N否Y
例如:我有一张桌子,其中有很多列。 PFB表结构
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
) )
从此我收集所有拥有多个产品和不同产品的客户,现在我想添加标志部分。
如果这种方法很好,请告诉我,如何实现下一步。
提前致谢!!
答案 0 :(得分: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