我正在SQL Server中为评估实体创建视图,并在其中尝试了此代码,但是在其中创建了派生属性 result 。
>评估是三个子实体的超级实体,这三个子实体是诊断性的,总结性的和形成性的,这就是我为之创建视图的原因assessment = diagnostic + summative + formative
。
结果将包括对前三个实体的得分属性的计算。
这是针对Oracle SQL开发人员
创建视图评估为
select asses_num ,d_score ,asses_type ,student_ID from diagnostic
union
select asses_num ,s_score ,asses_type ,student_ID from summative
union
select asses_num ,f_score ,asses_type ,student_ID from formative
union
select (d_score+s_score+f_score) as result from diagnostic, summative, formative ;
我希望创建包含结果作为派生属性的视图。但是,我遇到错误“查询块的结果列数不正确”
答案 0 :(得分:3)
“查询块的结果列数不正确”
之所以会收到ORA-01789,是因为UNION语句中的所有子查询都必须具有相同的投影(列数,匹配的数据类型)。您上一个子查询的投影与其他子查询的投影不同。
目前还不清楚为什么您要尝试通过UNION解决您的问题。使用常规联接可能更有意义:
create view assessment as
select d.asses_num
, d.student_ID
, d.d_score as diagnostic_score
, s.s_score as summative_score
, f.f_score as formative_score
, (d.d_score + s.s_score + f.f_score) as result
from diagnostic d
join summative s
on d.asses_num = s.asses_num
and d.student_ID = s.student_ID
join formative f
on d.asses_num = f.asses_num
and d.student_ID = f.student_ID
;
我的假设(在没有示例数据和结构的情况下):
如果这些不正确或您还有其他要求,请编辑您的问题以包括详细信息。