我一直在研究一个问题几个小时,我觉得我在圈子里跑。
我正在编写一个脚本,它会将一个表和旧数据库检查到一个新的数据库,它也希望看到表中是否存在差异。我已完成此部分,但希望使输出更容易阅读。理想情况下,当表中有记录时,我想要输出,表示存在差异。因此,如果表1,表4和表8中存在差异,则输出将显示表1,表4,表8.我将添加我的代码片段,但由于隐私原因,我需要更改一些内容。
if exists(
SELECT 'xyz' AS TableName, 1 FROM table1CD
LEFT JOIN database2 CL ON CL.X= CAST(CD.X AS VARCHAR(100)) AND CL.Type = 'type1'
WHERE CL.Type IS NULL
)
Select TableName
Else
UNION
else if exists(
SELECT 'abc' AS TableName, 1 FROM table3 CA
LEFT JOIN database2 CL ON CL.X = CAST(CA.Y AS VARCHAR(100)) AND CL.Type = 'type2'
WHERE CL.Type IS NULL
)
Select TableName
Else
union
more tables with repeating structure
我对这种SQL还很新。当我运行这个并且不断改变它以试图解决它但我现在在墙上时,我遇到了错误。
答案 0 :(得分:1)
如果您只需要一个列表,您可以在表变量中自行维护,例如:
declare @Tables table (TableName varchar(100));
if exists(
SELECT 'xyz' AS TableName, 1 FROM table1CD
LEFT JOIN database2 CL ON CL.X= CAST(CD.X AS VARCHAR(100)) AND CL.Type = 'type1'
WHERE CL.Type IS NULL
)
insert into @Tables
select 'Table1'
if exists(
SELECT 'abc' AS TableName, 1 FROM table3 CA
LEFT JOIN database2 CL ON CL.X = CAST(CA.Y AS VARCHAR(100)) AND CL.Type = 'type2'
WHERE CL.Type IS NULL
)
insert into @Tables
select 'Table3'
select * from @Tables;