【发布时间】:2020-01-13 19:11:54
【问题描述】:
我有两个表,想将它们组合在一起,如果不在一个列中,它将被添加到另一列。这样,如果它们匹配,除了第 1 列不包含第 1 列中的名称之外,将出现“N/A”,并且与第 2 列相同。
我让名称与存在的行匹配,并让“N/A”出现在不匹配的第 2 列中。我无法将更多行添加到不匹配的第 1 列。我在第 1 列中总共有 800 行,在第 2 列中有 330 行匹配。在第 2 列中有 30 行,不在第 1 列中。
所以我想得到一个总共 800 + 30 = 830 行的列表。 30 在第 1 列中为 N/A。
感谢您的帮助。我看过这里和其他地方,但似乎没有任何东西匹配或接近,或者我只是不明白。
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
结果:
SQL_DB_NAME DG_DB_NAME
AAA AAA
BBB BBB
CCC N/A
N/A DDD
总共 830 行
【问题讨论】:
-
我不明白你到底想做什么,请显示一些示例数据和期望的结果。
标签: teradata teradata-sql-assistant