2017-04-08 14 views
1

postgresで選択した2つのクエリ結果をunionまたはunionを使ってマージする必要があります。すべてのbczデータ型はdifferentです.iはクエリ結果自体を取得しようとしています。postgresで2つのselect query resultをマージする

私はそれはデータ型が

QUERY 1異なっていると言う組合と試してみました:

(select  a.id,a.op_id,a.consult_id,b.id,b.finding_value,b.test_name_id,b.methd_id,b.sngl_tst_id,b.grp_tst_id,b.cmplx_tst_rslt_id,b.test_type 
    from tra_rslt_entry_hd a 
     join tra_rslt_entry_dt b on b.result_id = a.id 
    where b.test_type = 'S' and a.consult_id = 5849) 

はQUERY 2:

(select distinct a.op_id,a.consult_id,d.test_name_id,d.specimen,max(g.male)as male,max(g.female) as female,max(g.common) as common ,max(g.adult) as adult,max(g.child) as child,max(g.gender_specific)as gender_specific, d.test_name 
    from tra_op_ip_consult_head a 
     join tra_op_ip_diagno_detail c on c.consult_id=a.consult_id 
     join mas_test_name d on d.test_name_id = c.test_name_id 
     join mas_tst_rgnt_nmval g on g.test_name_id = d.test_name_id 
    where a.consult_id =5849 and d.dept_id = 6 group by a.consult_id,a.op_id,d.test_name_id,d.test_name,d.specimen 
    order by d.test_name_id) 

答えて

2

UNION演算子を使用するには、すべてのクエリを持っている必要があります同じ数の列と列は互換性のある型でなければならないので、型変換を使用する必要があります。

query1(b.id)の4番目の列が数値で、query2(d.specimen)の4番目の列がテキストであるとします。 互換型ではないため、連合は失敗します。 タイプキャスティングを使用する必要があります。

select a.id,a.op_id,a.consult_id,b.id::text, ... 
union 
select distinct a.op_id,a.consult_id,d.test_name_id,d.specimen,...