如何生成标志以确定 table 在哪个数据库中?
How to generate a flag to determine which database a table is in?
我有一个 table,它由两列组成,DatabaseName 和 TableName。一些 table 存在于多个数据库中。我想做的是编写一个 returns distinct TableName 的查询和三个包含 Y
的新列(如果它在相应的数据库中)或 N
如果它不在相应的数据库中。澄清一下,table 可以在 TableName 列中出现多次,但每个条目的 DatabaseName 列中会有不同的内容。基本上我想要一个 tables 的列表和一个简单的方法来查看它在哪个数据库中。
我试过这样的事情:
sel distinct tablename, case when databasename='DB1' then 'Y' else 'N' end as DB1,
case when databasename='DB2' then 'Y' else 'N' end as DB2,
case when databasename='DB3' then 'Y' else 'N' end as DB3
from db.table_analysis
但它当然不会将具有相同 table名称的行组合在一起。
SELECT tablename,
CASE WHEN COUNT( CASE WHEN databasename='DB1' THEN 1 END) > 0
THEN 'Y'
ELSE 'N'
END as DB1,
CASE WHEN COUNT( CASE WHEN databasename='DB2' THEN 1 END) > 0
THEN 'Y'
ELSE 'N'
END as DB2,
CASE WHEN COUNT( CASE WHEN databasename='DB3' THEN 1 END) > 0
THEN 'Y'
ELSE 'N'
END as DB3
FROM db.table_analysis
GROUP BY tablename
我有一个 table,它由两列组成,DatabaseName 和 TableName。一些 table 存在于多个数据库中。我想做的是编写一个 returns distinct TableName 的查询和三个包含 Y
的新列(如果它在相应的数据库中)或 N
如果它不在相应的数据库中。澄清一下,table 可以在 TableName 列中出现多次,但每个条目的 DatabaseName 列中会有不同的内容。基本上我想要一个 tables 的列表和一个简单的方法来查看它在哪个数据库中。
我试过这样的事情:
sel distinct tablename, case when databasename='DB1' then 'Y' else 'N' end as DB1,
case when databasename='DB2' then 'Y' else 'N' end as DB2,
case when databasename='DB3' then 'Y' else 'N' end as DB3
from db.table_analysis
但它当然不会将具有相同 table名称的行组合在一起。
SELECT tablename,
CASE WHEN COUNT( CASE WHEN databasename='DB1' THEN 1 END) > 0
THEN 'Y'
ELSE 'N'
END as DB1,
CASE WHEN COUNT( CASE WHEN databasename='DB2' THEN 1 END) > 0
THEN 'Y'
ELSE 'N'
END as DB2,
CASE WHEN COUNT( CASE WHEN databasename='DB3' THEN 1 END) > 0
THEN 'Y'
ELSE 'N'
END as DB3
FROM db.table_analysis
GROUP BY tablename