Вместо этого вы можете попробовать эту версию:
SELECT database_name,
CASE WHEN EXISTS
(
SELECT 1 FROM dbo.column_list
WHERE column_list IS NOT NULL and database_id = d.database_id
UNION ALL
SELECT 1 FROM dbo.table_list
WHERE table_list IS NOT NULL and database_id = d.database_id
)
THEN 1
ELSE 0
END AS [has_definition]
FROM dbo.database_list AS d;
И, возможно, сравнить ее с этой:
SELECT database_name,
CASE WHEN EXISTS
(
SELECT 1 FROM dbo.column_list
WHERE column_list IS NOT NULL and database_id = d.database_id
)
OR EXISTS
(
SELECT 1 FROM dbo.table_list
WHERE table_list IS NOT NULL and database_id = d.database_id
)
THEN 1
ELSE 0
END AS [has_definition]
FROM dbo.database_list AS d;
Я не думаю, что вам понадобится отдельная версия, если у вас нетдубликаты в dbo.database_list
.
Также, пожалуйста, не используйте 'single quotes'
для псевдонимов - этот синтаксис устарел, вместо него следует использовать [square brackets]
.