-- 1つのスクリプトとして実行します
DECLARE
col_list VARCHAR;
diff_query VARCHAR;
BEGIN
-- ① テーブルA1のカラム情報から、カラムZを除いたカラム名をカンマ区切りで取得
SELECT LISTAGG(column_name, ', ') WITHIN GROUP (ORDER BY ordinal_position)
INTO col_list
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'YOUR_SCHEMA'
AND table_name = 'A1'
AND column_name <> 'Z';
-- ② テーブルA1とA2の各SELECT文を元に、EXCEPTで差分レコードを抽出するSQL文を生成
diff_query :=
'SELECT ' || col_list || ' FROM YOUR_SCHEMA.A1 ' ||
'EXCEPT ' ||
'SELECT ' || col_list || ' FROM YOUR_SCHEMA.A2';
-- ③ 動的SQLを実行して差分レコードを返す
-- ※SnowflakeのUIなどで実行すると、結果セットが表示されます。
EXECUTE IMMEDIATE diff_query;
END;