我创建了一个查询,用于比较三个数据库中的一个表。
我的查询代码是:
SELECT item, description, stocked, product_code, cost_method, cost_type
FROM
(
SELECT item, description, stocked, product_code, cost_method, cost_type
FROM [Arborg_Test_App].[dbo].item
UNION ALL
SELECT item, description, stocked, product_code, cost_method, cost_type
FROM [Teulon_Test_App].[dbo].item
UNION ALL
SELECT item, description, stocked, product_code, cost_method, cost_type
FROM [PA_Test_App].[dbo].item
) data
GROUP BY item, description, stocked, product_code, cost_method, cost_type
HAVING COUNT(*) = 1
它工作得很好,它比较了三个数据库中的表 item ,只返回所选列中的数据在三个数据库之间不匹配的行。
我的问题是,在返回的结果中,我无法判断哪一行来自哪个数据库。我的查询结果:
我需要的是在查询结果中添加一列,显示每行的数据库名称。
答案 0 :(得分:3)
因为您正在寻找单例,所以您只需将db名称添加到每个子查询中,然后在外部查询中使用max()
:
SELECT item, description, stocked, product_code, cost_method, cost_type,
max(db) as thedb
FROM
(
SELECT item, description, stocked, product_code, cost_method, cost_type, 'arbord' as db
FROM [Arborg_Test_App].[dbo].item
UNION ALL
SELECT item, description, stocked, product_code, cost_method, cost_type, 'teulon'
FROM [Teulon_Test_App].[dbo].item
UNION ALL
SELECT item, description, stocked, product_code, cost_method, cost_type, 'pa'
FROM [PA_Test_App].[dbo].item
) data
GROUP BY item, description, stocked, product_code, cost_method, cost_type
HAVING COUNT(*) = 1;