如何在case语句中使用子查询?

时间:2014-05-07 14:44:10

标签: sql teradata

我有两张桌子。

表1

t1id var1 var2
1    xxx   ccc
2    ccc   ddd
3    eee   bbb

表2

t2id attribute 
1    lll  
3    ggg
4    ggg
5    lll

如果t1id

,我需要从table1中选择*,并将attributet1id=t2id连接起来

这是我试过的

SEL CASE WHEN (t1id IN (SELECT t2id FROM table2) ) 
    THEN t1id || attribute 
    ELSE t1id END AS t1idModified,
var1 , var2
FROM table1,table2

然而,它没有用。如何在案例中使用子查询?

1 个答案:

答案 0 :(得分:0)

即使允许使用此语法,也不会返回预期的结果。

t1id,数字或字符串的数据类型是什么?

您可以将其重写为外部联接(即使没有匹配也返回一行)和COALESCE(连接属性或''):

SELECT
   TRIM(t1.t1id) || (COALESCE(t2.ATTRIBUTE, '')) AS t1idModified,
   var1, var2
FROM table1 AS t1
LEFT JOIN table2 AS t2
ON t1.t1id = t2.t2id