根据优先级返回列表

时间:2015-03-03 11:47:47

标签: sql arrays sorting

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

  1. 如果客户名称 - a ..则为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
    
  4. 不确定如何编写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
    

2 个答案:

答案 0 :(得分:1)

SELECT CUSTOMERID,ACCOUNTID 从 (选择CUSTOMERNAME,ACCOUNTID,         RANK()OVER(由ACCOUNTID ORDER BY组成                      CUSTOMERNAME喜欢' a%'然后1                           当CUSTOMERNAME喜欢' a%'然后2                           当CUSTOMERNAME喜欢' a%'然后3                       ELSE 4)RNK  来自TABLE1) RNK = 1

答案 1 :(得分:0)

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

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

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