具有排名顺序的SQL查询

时间:2014-11-17 15:42:16

标签: db2

全部,    需要有关其中一个sql查询的帮助。我有一个查询,可以提取排名顺序的记录。

Select * from 
(select count(*) cnt, customer_cd, smallint(Rank() Over(Order by count(8) Desc)) as rnk
from table.customer

现在,结果显示为,

Cnt   Customer Cd
110   1- Retail
90    2-Human resources
20    3-Information Technology
11    Not Standard

我想从中删除描述,并且只有1,2,3,NS等客户代码。任何帮助如何实现这一点。 感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用LOCATE来查找连字符的位置,假设您始终使用连字符。然后,您可以使用SUBSTRING在LOCATE找到的位置之前获取字符串的一部分。

select substring(customer_cd,0,locate('-',customer_cd)) 
from table.customer

应该告诉你你会得到什么。

您似乎有一些根本没有代码的数据(例如"非标准")。这些字段将显示为空白。如果要将其替换为某些特定代码,可以使用CASE ... END表达式。

select CASE when locate('-',customer_cd)==0 then "" 
       else substring(customer_cd,0, locate('-',customer_cd) ) END
from table.customer