Sql server 优先客户细分

Sql server 优先客户细分,sql-server,Sql Server,我的客户拥有来自不同产品组的产品。例如: Client Product group 1 All-in-one 1 Senior 2 All-in-one 2 Other 3 Senior 3 Other 4 Other 产品组具有优先级,因此,如果您同时拥有全能型和高级产品组的产品,您将被归类为全能型客户 按优先级排列的产品组包括: 一应俱全 前辈 其他 我想要一个每个客户只出现一次的视图,如: Client

我的客户拥有来自不同产品组的产品。例如:

Client  Product group
1       All-in-one
1       Senior
2       All-in-one
2       Other
3       Senior
3       Other
4       Other
产品组具有优先级,因此,如果您同时拥有全能型和高级产品组的产品,您将被归类为全能型客户

按优先级排列的产品组包括:

  • 一应俱全
  • 前辈
  • 其他
  • 我想要一个每个客户只出现一次的视图,如:

    Client  Product group
    1       All-in-one
    2       All-in-one
    3       Senior
    4       Other
    

    在没有大量视图的情况下,这可以在一个步骤中完成吗

    如果只保留这些产品组,第一个可以工作,第二个可以灵活订购,但使用CTE

    select id,min(pg) from #client
    group by id
    
    ;with cte
    as
    (
    select 
    id,
    min(case when pg='All-in-one'  then 1
     when pg='senior' then 2
     when pg='other' then 3
     end ) pg
     from 
     #client
     group by id
     )
     select id,
     case pg when 1 then 'All-in-one'
      when 2 then 'Senior'
      when 3 then 'other'
     end as 'PG'
     from cte
    
    试试这个(您不需要使用
    客户机\u组
    cte,因为您已经有了这个表):

    结果:

    Client      Name
    ----------- ----------
    1           All-in-one
    2           All-in-one
    3           Senior
    4           Other
    
    (4 row(s) affected)
    

    当一个客户同时拥有这两个产品组时,你需要优先考虑保留哪一个产品组?@TheGameiswar是的,没错。对不起,如果不清楚的话
    Client      Name
    ----------- ----------
    1           All-in-one
    2           All-in-one
    3           Senior
    4           Other
    
    (4 row(s) affected)