Teradata Case When语句-替换结果中不在1列中的值
我有两个表,希望合并它们,如果不在一列中,它将添加到另一列中。这样,如果它们匹配(第1列不包含第1列中的名称除外),则会出现“N/A”,第2列也是如此 我获取要与存在的行匹配的名称,并在不匹配的第2列中显示“N/A”。我无法在没有匹配项的列1中添加更多行。第1列中总共有800行,第2列中有330行匹配。第2列中有30个不在第1列中 所以我想得到一个总共800+30=830行的列表。30在第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
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行以下是我对您的理解:
- 有两个表包含要“合并”的数据
有800个“良好”值,您希望在DL_SCAN1
第1列中返回这些值
有30个“良好”值,您希望在DG_SCAN
第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'