一直在处理这个问题已经有一段时间了......继续得到错误“Corrosponding select-list表达式不兼容。我在每个select语句中选择相同的#列。
create volatile table dt as (
SELECT
gcv.I_SYS_IDV,
gcv.i_pln,
gcv.c_typ_cov,
gcv.d_eff,
gcv.d_eff_pln,
gcv.c_sta,
gcv.d_sta,
gcv.c_mde_bft_fst,
gcv.a_bft_fst,
gcv.c_mde_bft_sec,
gcv.a_bft_sec,
gcv.c_mde_bft_trd,
gcv.a_bft_trd,
gcv.p_cre_hom,
gcv.c_cl_rsk,
gpv.c_val,
gpv.i_val,
gcv.c_pol,
gpv.i_prv
FROM Pearl_P.tltc906_gcv gcv,
pearl_p.tltc912_gpv gpv
WHERE gcv.i_pln > 0
AND gcv.i_pln = gpv.i_pln
and gpv.i_prv = '36'
and gcv.c_pol between 'lac100001' and 'lac100004'
UNION
SELECT
gcv.I_SYS_IDV,
gcv.i_pln,
gcv.c_typ_cov,
gcv.d_eff,
gcv.d_eff_pln,
gcv.c_sta,
gcv.d_sta,
gcv.c_mde_bft_fst,
gcv.a_bft_fst,
gcv.c_mde_bft_sec,
gcv.a_bft_sec,
gcv.c_mde_bft_trd,
gcv.a_bft_trd,
gcv.p_cre_hom,
gcv.c_cl_rsk,
gcv.c_pol,
gpv.i_val,
gpv.i_pln,
gpv.i_prv
FROM Pearl_P.tltc906_gcv gcv,
pearl_p.tltc912_gpv gpv
where NOT EXISTS(
SELECT 1
FROM pearl_p.tltc906_gcv gcv,
pearl_p.tltc912_gpv gpv
WHERE gcv.i_pln > 0
AND gcv.i_pln = gpv.i_pln
and gpv.i_prv = '36'
)
) with data
PRIMARY INDEX (i_sys_idv)
on commit preserve rows;
答案 0 :(得分:1)
第二个select语句的最后4个值与第一个语句中的值不匹配。尝试命名(使用别名)这些列相同的东西(配对它们)。要结合,您需要在集合之间使用相同的列。
退房:http://msdn.microsoft.com/en-us/library/ms180026.aspx
以下是组合两个结果集的基本规则 使用UNION进行查询:
列的数量和顺序必须完全相同 查询。
数据类型必须兼容。
答案 1 :(得分:0)
您应该检查每列的数据类型。每个SELECT语句之间的数据类型必须兼容。
答案 2 :(得分:0)
查询的两个部分中每列的数据类型是否相同?
如果列名的第一个字符表示数据类型(i =整数,c =字符等),我猜测问题出在选择列表中的倒数第二列。第一个查询是选择gcv.c_pol,第二个查询是选择gpv.i_pln。
答案 3 :(得分:0)
开始注释掉行直到它起作用。即,注释掉每个选择列表中的所有字段,然后一个一个地取消注释第一个,然后是第二个,等等。你最终会找到它。