我想知道在进行体积测试时是否只能从表中获取不匹配的数据集,请查看以下示例:
如果下面的表是我执行测试的目标表,如果数据被正确加载,我会编写一个SQL来从源中选择列并对目标表执行减号,如果让我们说的话源为{2000}的sal
为2000,然后从源到目标不匹配,是否可以只将id和sal列作为减号查询的输出。
要清楚我是否有一个包含100列的表来进行测试,即使1列中存在不匹配,也会返回所有100列,因此我只想返回1列不匹配的列。 / p>
id Name sal
-- ---- ----
1 XXX 1000
2 YYY 2000
3 ZZZ 4000
4 AAA 5000
答案 0 :(得分:2)
以下假设
源表和目标表都有一个共同的主键
然后可以使用case语句缩小导致不匹配的确切列
http://sqlfiddle.com/#!2/a78eca/16
select
ST.id,
case
when ST.name!=TT.name then 'Issue in name'
When ST.sal!=TT.sal then 'Issue in Sal'
Else 'OK' END As Check_Column
From source_table ST, Target_table TT
where ST.id=TT.id
and (ST.name!=TT.name OR ST.sal!=TT.sal)
上面的解释是where条件只过滤掉有问题的行,case语句会告诉哪一行导致不匹配
答案 1 :(得分:0)
假设您的目标数据集位于' TargetTable'并且您的源数据集位于' SourceTable&#39 ;;也许你可以尝试类似的东西:
SELECT Name, Sal FROM TargetTable as t
WHERE (NOT EXISTS
(SELECT Name, Sal from SourceTable as s
WHERE(Name = t.Name) OR (Sal = t.Sal)))
答案 2 :(得分:0)
有以下假设:
查询可以写成:
SELECT
T1.Name, T1.sal, S1.sal
FROM
schemaName.TargetTable T1,
schemaName.SourceTable S1
WHERE
T1.id = S1.id
AND T1.sal <> S1.sal