Teradata Case When语句-替换结果中不在1列中的值

Teradata Case When语句-替换结果中不在1列中的值,teradata,teradata-sql-assistant,Teradata,Teradata Sql Assistant,我有两个表,希望合并它们,如果不在一列中,它将添加到另一列中。这样,如果它们匹配(第1列不包含第1列中的名称除外),则会出现“N/A”,第2列也是如此 我获取要与存在的行匹配的名称,并在不匹配的第2列中显示“N/A”。我无法在没有匹配项的列1中添加更多行。第1列中总共有800行,第2列中有330行匹配。第2列中有30个不在第1列中 所以我想得到一个总共800+30=830行的列表。30在第1栏中为不适用 谢谢你的帮助。我看了这里和其他地方,但似乎没有匹配或接近,或者我只是没有得到它 SELECT

我有两个表,希望合并它们,如果不在一列中,它将添加到另一列中。这样,如果它们匹配(第1列不包含第1列中的名称除外),则会出现“N/A”,第2列也是如此

我获取要与存在的行匹配的名称,并在不匹配的第2列中显示“N/A”。我无法在没有匹配项的列1中添加更多行。第1列中总共有800行,第2列中有330行匹配。第2列中有30个不在第1列中

所以我想得到一个总共800+30=830行的列表。30在第1栏中为不适用

谢谢你的帮助。我看了这里和其他地方,但似乎没有匹配或接近,或者我只是没有得到它

SELECT  
  CASE 
    WHEN cc.Db_Name = dr.DB_NAME THEN cc.DatabaseName
    WHEN cc.DatabaseName <> dr.DBE_NAME THEN 'n/a'
    ELSE cc.Db_Name
  END AS SQL_DB_NAME
  , CASE 
    WHEN cc.Db_Name = dr.DB_NAME THEN dr.DATABASE_NAME
    WHEN cc.Db_Name <> dr.DB_NAME THEN 'zz'
    ELSE 'N/A'
  END AS DG_DB_NAME
FROM DL_SCANS1 AS cc -- (column1)
LEFT JOIN DG_SCAN AS dr -- (column2)
  ON dr.DB_NAME = cc.DB_Name AND dr.Table_View = 'TABLE'
GROUP BY cc.Db_Name, dr.DB_NAME 

总共830行

以下是我对您的理解:

  • 有两个表包含要“合并”的数据
  • DL_SCAN1
    有800个“良好”值,您希望在
    第1列中返回这些值
  • DG_SCAN
    有30个“良好”值,您希望在
    第2列中返回这些值
  • 您希望返回830行,但当前查询仅返回800行
如果是这种情况,那么原因是因为您正在进行
左联接
。这将获取“左”表(
DL_SCAN1
)中的所有800行,并将它们与“右”表(
DG_SCAN
)中具有相同
DB_NAME
值的匹配行相结合。来自
DG_SCAN
的任何其他不匹配行将被丢弃

尝试将
LEFT JOIN
更改为
FULL OUTER JOIN
,它还将包括
DG_SCAN
中不匹配的行,这将为您提供缺少的30行

FULL OUTER JOIN DG_SCAN AS dr -- (column2)
  ON dr.DB_NAME = cc.DB_Name AND dr.Table_View = 'TABLE'

有关Teradata中联接的更多信息:

我不太明白您到底想做什么,请显示一些示例数据和所需结果。感谢您的帮助!成功了。很抱歉反应太晚。呜呜!乐意帮忙:)
FULL OUTER JOIN DG_SCAN AS dr -- (column2)
  ON dr.DB_NAME = cc.DB_Name AND dr.Table_View = 'TABLE'