使用IN在CASE子句中进行SELECT

时间:2013-12-23 10:18:47

标签: sql database teradata

我想这样做:

SELECT 
      CASE WHEN var in (SELECT var FROM var_table) THEN 'var1'
      ELSE 'var2' 
      END AS myvar

但它抱怨这个。如何避免在查询中粘贴var_table中的整个var列表。顺便说一下,这是Teradata。

谢谢!

2 个答案:

答案 0 :(得分:3)

你必须有一个相当旧版本的Teradata,因为自TD13以来支持这样的标量子查询。

即使他们受到支持,我总是会尝试重写它们(在任何DBMS中不仅仅是TD)。你的是一个隐藏的外连接(假设它是包含FROM的查询中的前几行):

SELECT
   CASE WHEN t1.var IS NOT NULL THEN 'var1' ELSE 'var2' END AS myvar
FROM t1 LEFT JOIN var_table AS t2
ON t1.var = t2.var

答案 1 :(得分:-1)

试试这个

SELECT 
      CASE WHEN var is null THEN 'var2'
      ELSE 'var1' 
      END 
from var_table