0

シェル スクリプトの一部として netezza SQL プロセスを実行していますが、SQL コードの 1 つで、2 つの異なるテーブルの行数が一致しない場合にエラーまたは例外を発生させたいと考えています。

SQL コード:

/*  The following 2 tables should return the same number of rows to make sure the process is correct */

select              count(*) 
from                (
                select distinct col1, col2,col3 
                from table_a
                where  week > 0 and rec >= 1
                ) as x ;


select              count(*) 
from                (
                select distinct col1, col2, col3
                from table_b
                ) as y ;

2 つの行数を比較して netezza SQL プロセスで例外/エラーを発生させ、2 つの行数が等しくない場合にプロセスを終了するにはどうすればよいですか?

4

2 に答える 2

1

スクリプトが最良の選択肢であることに同意します。ただし、クロス結合を使用して SQL 自体でチェックを行うこともできます

Select a.*
from Next_Step_table a cross join
(select case when y.y_cnt is null then 'No Match' else 'Match' end as match
from (select count(*) as x_cnt
from  ( select distinct col1, col2,col3 
        from table_a
        where  week > 0 and rec >= 1
       )) x left outer join
(select count(*) as y_cnt
from  (select distinct col1, col2, col3
       from table_b
       )) y  on x.x_cnt=y.y_cnt) match_tbl
where match_tbl.match='Match'
于 2013-12-03T12:19:33.780 に答える