0

我在大约 50 列的数据集中有以下两列:

One Two
1B   2A
3D   4C
3D   3D

...

值从 1 到 5(从最高到最低)和从 A 到 F(从最高到最低)。我需要计算有多少观察值被降级了 0.5、1、2、3... 降级是指 One 的值低于 2。例如:

One Two
1B 2A

我有一个比二低 1。我目前正在使用一个案例,其中每个案例:

Select * ,
Case when one like ‘1%’ and two like ‘2%’  then ...

from my_table

然而,这是非常耗时的。你知道我怎么能以更简单的方式做到这一点吗?

4

1 回答 1

1

你不能只使用字符串比较吗?

(case where one < two then 'lower' else 'not lower' end)

或者,如果您只想比较第一个字符(数字):

(case when left(one, 1) < left(two, 1) then 'lower' else 'not lower' end)

如果您特别希望该值小于“1”,则:

(case when cast(left(one, 1) as int) = cast(left(two, 1) as int) - 1
      then 'lower' else 'not lower'
 end)
于 2021-05-27T12:01:11.690 回答