层次比较

Hierarchical comparison

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

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

...

值从 1 到 5(从最高到最低)和从 A 到 F(从最高到最低)。 我需要计算有多少观测值被降级了 0.5、1、2、3...降级意味着一的值低于二。 例如:

One Two
1B 2A

我知道一比二小 1。 我目前正在为他们每个人使用一个案例:

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

from my_table

然而,这非常耗时。 你知道我怎样才能更简单地做到这一点吗?

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

(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)