【发布时间】:2021-01-01 13:11:42
【问题描述】:
我目前有一个 Select LEFT,它正在抓取 ID 字段的左第一个数字。只要我们的 ID 号是 4 位数字(0 到 9999),它就可以正常工作,但是我们现在引入了 10,000 范围内的 5 位数字,当前的 Select LEFT 无法区分 1,000 和 10,000 之间的差异。选择第一个数字的目的是按千位(1000、2000、3000、...、100000)对数字进行分组。正在发生的事情是 10000 现在被分组到 1000 组中,而不是创建新的 10000 组。请参阅下面的代码。
SELECT
LEFT(table.IDField,1) as PolicyGroup,
CASE LEFT(table.IDField,1)
WHEN '1' THEN '1000 Group'
WHEN '2' THEN '2000 Group'
WHEN '3' THEN '3000 Group'
WHEN '4' THEN '4000 Group'
WHEN '5' THEN '5000 Group'
WHEN '6' THEN '6000 Group'
WHEN '7' THEN '7000 Group'
WHEN '8' THEN '8000 Group'
WHEN '9' THEN '9000 Group'
WHEN '10' THEN '10000 Group'
END as PolicyExplanation,
cpsys_Datacurrent.IntegrationId as PolicyNumber2
ID 字段没有在数字前面填充任何内容,因此 4 位只有 4 位,5 位只有 5,但我需要能够按千人分组,包括 10,000 人组。
【问题讨论】:
-
您可能还会遇到排序问题,因为您可能一直在进行字母排序。
标签: sql sql-server string select case