我想这样做:
SELECT
CASE WHEN var in (SELECT var FROM var_table) THEN 'var1'
ELSE 'var2'
END AS myvar
但它抱怨这个。如何避免在查询中粘贴var_table中的整个var列表。顺便说一下,这是Teradata。
谢谢!
答案 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