Sql 在带有IN的CASE子句中选择
我想这样做:Sql 在带有IN的CASE子句中选择,sql,database,teradata,Sql,Database,Teradata,我想这样做: SELECT CASE WHEN var in (SELECT var FROM var_table) THEN 'var1' ELSE 'var2' END AS myvar 但它对此表示不满。如何避免将var_表中的整个var列表粘贴到查询中。顺便说一下,这是Teradata 谢谢 试试这个 SELECT CASE WHEN var is null THEN 'var2' ELSE 'var1'
SELECT
CASE WHEN var in (SELECT var FROM var_table) THEN 'var1'
ELSE 'var2'
END AS myvar
但它对此表示不满。如何避免将var_表中的整个var列表粘贴到查询中。顺便说一下,这是Teradata
谢谢 试试这个
SELECT
CASE WHEN var is null THEN 'var2'
ELSE 'var1'
END
from var_table
您必须有一个非常旧的Teradata版本,因为自TD13以来就支持这样的标量子查询 即使支持它们,我也会尝试重写它们(在任何DBMS中,而不仅仅是TD中)。您的是一个隐藏的外部联接(假设它是包含from的查询的前几行):
这只是没有返回相同的结果。var_表中没有“hello”。我希望那个案子是“var2”。我看不出你的代码会是什么样子?
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