使用案例语句比较和排除



(在teradata中工作(,我的任务是将3个特定列中任何一个的值与其他3个特定列进行比较。如果最初的3列之一的值与第二组的3列中的任何一个值匹配。

的任何一个值,我将包括记录。

列diag_prefix,diag2_prefix和diag3_prefix正在比较xref_diag_prefix,xref_dia2g_prefix,xref_diag2_prefix

因此,例如,如果diag_prefix包含值A10,并且该值也包含在Xref_diag_prefix中,或Xref_dia2g_prefix或Xref_diag2_prefix中

我相信我的这一部分如下:

AND (CASE WHEN Diag_Prefix = Xref_Diag_Prefix OR Diag_Prefix = Xref_Diag2_Prefix OR Diag_Prefix = Xref_Diag3_Prefix
    OR Diag2_Prefix = Xref_Diag_Prefix OR Diag2_Prefix = Xref_Diag2_Prefix OR Diag2_Prefix = Xref_Diag3_Prefix
    OR Diag3_Prefix = Xref_Diag_Prefix OR Diag3_Prefix = Xref_Diag2_Prefix OR Diag3_Prefix = Xref_Diag3_Prefix
    THEN 'I' ELSE 'E' END) = 'I'

我的问题是,这些列中的某些值是" null"的,并且在这种情况下已被" UNK"的值填充。这些记录在上面的案例语句中包含,因此我试图将UNK值更改为每个字段的独特之处,如下所示:

    /* Converting UNK values to exclude from subsequent comparison case statement */
    AND (CASE WHEN Diag_Prefix = 'UNK' THEN 'UNKD1' ELSE Diag_Prefix END)
    AND (CASE WHEN Diag2_Prefix = 'UNK' THEN 'UNKD2' ELSE Diag2_Prefix END)
    AND (CASE WHEN Diag3_Prefix = 'UNK' THEN 'UNKD3' ELSE Diag3_Prefix END)
    AND (CASE WHEN Xref_Diag_Prefix = 'UNK' THEN 'UNKX1' ELSE Xref_Diag_Prefix END)
    AND (CASE WHEN Xref_Diag2_Prefix = 'UNK' THEN 'UNKX2' ELSE Xref_Diag2_Prefix END)
    AND (CASE WHEN Xref_Diag3_Prefix = 'UNK' THEN 'UNKX3' ELSE Xref_Diag3_Prefix END)

但这给我一个错误,指出:" ...期望像'成功','opets',''','''''''或'包含'(和'和'''''''''''''''''和'和'和'和'和'和'和'和'和'和'和'''和'和''和'''和'和'和'''和'和'关键字。">

我不确定只能以某种方式创建VT是否会更容易。任何帮助将不胜感激。

这似乎在没有案例语句妨碍的情况下更容易执行,而只是忽略了'unk'值:

WHERE
    ((
        Diag_Prefix = Xref_Diag_Prefix
        OR Diag_Prefix = Xref_Diag2_Prefix
        OR Diag_Prefix = Xref_Diag3_Prefix
    ) AND Diag_Prefix <> 'UNK')
    OR ((
        Diag2_Prefix = Xref_Diag_Prefix
        OR Diag2_Prefix = Xref_Diag2_Prefix
        OR Diag2_Prefix = Xref_Diag3_Prefix
    ) AND Diag2_Prefix <> 'UNK')
    OR ((
        Diag3_Prefix = Xref_Diag_Prefix
        OR Diag3_Prefix = Xref_Diag2_Prefix
        OR Diag3_Prefix = Xref_Diag3_Prefix
    ) AND Diag3_Prefix <> 'UNK'

最新更新