我有一个带有值的表。根据B列中的值(数据的不同视图)复制值。我似乎无法根据条件选择一个值(如果A列中的值以XX或YY开头,则选择FIN,否则选择PO)
我尝试了“ if”和“ case”,但没有任何作用
Table
Code Geoview Metric
XX1000 FIN 10
XX1000 PO 10
YY1800 FIN 20
YY1800 PO 20
TT2000 PO 35
TT2500 PO 50
`CASE
WHEN [Code] = '%XX' and [Code] = '%YY'
THEN [Geoview] = 'FIN'
ELSE [Geoview] = 'PO'
END`
如果代码以XX或YY开头,则在地理视图中以FIN返回行,否则获取PO(仅FIN或PO作为可用值)
答案 0 :(得分:1)
使用LIKE
和此模式'XX%'
,这意味着从'XX'
开始:
select
Code,
CASE
WHEN Code LIKE 'XX%' OR Code LIKE 'YY%' THEN 'FIN'
ELSE 'PO'
END Geoview,
Metric
FROM mytable
或使用LEFT()
:
select
Code,
CASE
WHEN LEFT(Code, 2) IN ('XX', 'YY') THEN 'FIN'
ELSE 'PO'
END Geoview,
Metric
FROM mytable
答案 1 :(得分:0)
对于以XX或YY开头的字符串,请使用LIKE XX%
和LIKE YY%
对于检查,都使用OR代替AND
CASE
WHEN [Code] LIKE 'XX%' OR [Code] LIKE 'YY%'
THEN [Geoview] = 'FIN'
ELSE [Geoview] = 'PO'
END
答案 2 :(得分:0)
尝试如下
select code,case when code like '%XX' or '%YY'
then 'FIN'
else 'PO' emd as geo from table_name
答案 3 :(得分:0)
您可以使用CASE在谓词中创建复杂的关系条件,但是出于性能目的,最好以更直接的方式对其进行编码。
192.168.0.1 cc:35:40 15 882 Technicolor CH USA
192.168.0.2 cc:35:40 7 294 Technicolor CH USA
192.168.0.3 cc:35:40 1 42 Technicolor CH USA
192.168.81.1 cc:35:40 1 42 Technicolor CH USA