2016-03-17 64 views
0

在随后创建视图,我得到一个错误来自视野错误条款

create or replace view viewfee as 
    select unique_id,session,course_cat,course,class,rollno, sum(adm_due) as adm_due, sum(tuition_due) as tuition_due, sum(exam_due) as exam_due from 
    (
    select unique_id,session,course_cat,course,class,rollno,null as adm_due, null as tuition_due, null as exam_due from tbstdinfo 
    union all 
    select unique_id,null,null,null,null,null,(adm_tot - sum(adm_payment)) AS adm_due, null, null from tbfeeadmission group by unique_id 
    union all 
    select unique_id,null,null,null,null,null,null, (tuition_tot - sum(tuition_payment)) AS tuition_due, null from tbfeetuition group by unique_id 
    union all 
    select unique_id,null,null,null,null,null,null, null, (exam_tot - sum(exam_payment)) AS exam_due from tbfeeexam group by unique_id 
    )x 
    group by unique_id 

,但如果我不视图执行查询,它工作正常

select unique_id,session,course_cat,course,class,rollno, sum(adm_due) as adm_due, sum(tuition_due) as tuition_due, sum(exam_due) as exam_due from 
(
select unique_id,session,course_cat,course,class,rollno,null as adm_due, null as tuition_due, null as exam_due from tbstdinfo 
union all 
select unique_id,null,null,null,null,null,(adm_tot - sum(adm_payment)) AS adm_due, null, null from tbfeeadmission group by unique_id 
union all 
select unique_id,null,null,null,null,null,null, (tuition_tot - sum(tuition_payment)) AS tuition_due, null from tbfeetuition group by unique_id 
union all 
select unique_id,null,null,null,null,null,null, null, (exam_tot - sum(exam_payment)) AS exam_due from tbfeeexam group by unique_id 
)x 
group by unique_id 

其实我需要做四个结合表格以在单个表格中获取所有需要的记录。请帮忙

+0

发布错误讯息 –

+0

#1349 - 视图的SELECT包含FROM子句中的子查询 –

+0

创建视图无法从中找到子查询。看看这个解决方法:http://stackoverflow.com/questions/8428641/views-select-contains-a-subquery-in-the-from-clause –

回答

1

你不能在视图定义子选择,但是你可以做这样的事情:

create or replace view intermediate_view as 
select unique_id,session,course_cat,course,class,rollno,null as adm_due, null as tuition_due, null as exam_due from tbstdinfo 
union all 
select unique_id,null,null,null,null,null,(adm_tot - sum(adm_payment)) AS adm_due, null, null from tbfeeadmission group by unique_id 
union all 
select unique_id,null,null,null,null,null,null, (tuition_tot - sum(tuition_payment)) AS tuition_due, null from tbfeetuition group by unique_id 
union all 
select unique_id,null,null,null,null,null,null, null, (exam_tot - sum(exam_payment)) AS exam_due from tbfeeexam group by unique_id 

然后

create or replace view viewfee as 
select unique_id,session,course_cat,course,class,rollno, sum(adm_due) as adm_due, sum(tuition_due) as tuition_due, sum(exam_due) as exam_due from intermediate_view 
group by unique_id 

为一个workaro und

+0

我已经这样做了,但我想在一个单一的观点,无论如何谢谢 –