层次比较
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)
我在一个大约有 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)