2015-03-03 110 views
0

我必须检查是否显示可能有多个客户与该帐户相关的帐户的客户ID。我必须根据以下优先级显示一个客户ID。根据优先级返回列表

  1. 如果客户名称 - 一个..然后1
  2. 如果客户名称 - B ..然后2
  3. 如果客户名称 - c^..然后3

    Case customerid 
    when customer name like 'a%' then customer_id1 
    when customer name like 'b%' then customer_id2 
    when customer name like 'c%' then customer_id3 
    else customer_id4 
    end 
    

不知道如何编写select语句,以便只显示最高优先级ID

Sample Data 
    CustomerName CustomerID AccountID 
    Arthur  123  acc1 
    Bruce  456  acc1 
    Billy  812  acc2 
    Camilla  768  acc3 
    Dominic  891  acc2 

Expected Output 
    AccountID CustomerID 
    acc1  123 
    acc2  812 
    acc3  768 
+0

请提供样本数据和预期输出。 – msfoster 2015-03-03 12:45:10

回答

0

我不知道我是否理解你的问题。

但根据你的例子你可以试试这个:

SELECT AccountID, min(CustomerID) 
FROM SampleData 
GROUP BY AccountID 
+0

感谢您的回复,但我想要的客户ID不应以最低限度为基础,而应以优先顺序依次列出客户名称。 也就是说,如果客户名称以a开头,那么将该客户id替换为b开始的客户名称的id。 – phouston 2015-03-03 13:44:37

1

SELECT CUSTOMERID,ACCOUNTID FROM (选择CUSTOMERNAME,ACCOUNTID, RANK()OVER(GROUP BY ACCOUNTID ORDER BY CASE WHEN CUSTOMERNAME像'一%' 然后1 WHEN CUSTOMERNAME像 '一%' 然后2 WHEN CUSTOMERNAME像 '一%' 然后3 ELSE 4)RNK FROM TABLE1) WHERE RNK = 1