我有一个由两列组成的表,DatabaseName和TableName。有些表位于多个数据库中。我想要做的是编写一个返回不同TableName的查询和三个包含Y
的新列(如果它位于相应的数据库中)或N
(如果不存在)。为了澄清,表可以在TableName列中出现多次,但在每个条目的DatabaseName列中都会有不同的内容。基本上我想要一个表的列表,以及一个简单的方法来查看它所在的数据库。
我试过这样的事情:
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
但它当然不会将具有相同表名的行组合在一起。
答案 0 :(得分:1)
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