全部, 需要有关其中一个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等客户代码。任何帮助如何实现这一点。 感谢。
答案 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