0

我一直在解决一个问题几个小时,我觉得我在绕圈子。

我正在编写一个脚本,它将检查从旧数据库到新数据库的表,它也想查看表中是否存在差异。我已经完成了这部分,但想让输出更容易阅读。理想情况下,我希望在表中有记录时发生输出,表示存在差异。因此,如果表 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 还是很陌生。当我运行它并不断改变它以试图解决它时,我遇到了错误,但我现在在墙上。

4

1 回答 1

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;
于 2013-05-14T23:13:21.323 回答