如何在WHERE子句中为字符串赋值?

时间:2013-11-01 14:15:47

标签: teradata

表格是

 id  col1    col2  
 1   former  good  
 2   future  fair
 3   now     bad
 4   former  good
    .............

目标:我只需要选择那些累积分数高于0.8的行

1)如果col1 ='前'那么该行获得0.2分,如果'现在'那么'0.7',如果'未来'那么0.3

2)如果col2 ='good'那么该行得0.8分,如果'坏'那么'0.1',如果'公平'那么0.5


因此我需要在WHERE子句中指定数值。我想避免在SELECT中更改值,因为我需要用户能够看到标签('good','now'等)而不是数字。

我该怎么做?

SELECT * 
FROM mytable 
WHERE ?

2 个答案:

答案 0 :(得分:7)

使用CASE根据您的逻辑分配权重:

WHERE 
   CASE col1 
      WHEN 'former' THEN 0.2
      WHEN 'now'    THEN 0.7
      WHEN 'future' THEN 0.3
      ELSE 0
   END +
   CASE col2 
      WHEN 'good' THEN 0.8 
      WHEN 'bad'  THEN 0.1
      WHEN 'fair' THEN 0.5
      ELSE 0
   END > 0.8

答案 1 :(得分:1)

SELECT * FROM myTable where col1 + col2 > 0.8

但为我们提供表格的真实结构。