我需要有一个列,其中包含从带有子查询的count()函数中获取的数据。我目前正在使用临时表,它由以下人员创建:
CREATE TABLE tempfact1 AS
(
SELECT coursesloc.courseID, preferences.appid, campuses.campusid
FROM coursesloc, preferences, campuses
WHERE coursesloc.courseID = preferences.courseID AND coursesloc.campusid = campuses.campusid AND preferences.prefaccepted = 'Y'
)
;
ALTER TABLE tempfact1
ADD TNA NUMERIC;
然后我运行以下内容尝试生成TNA(每个校园的申请人总数),具体如下:
UPDATE tempfact1
SET TNA = (SELECT COUNT(appid) FROM tempfact1 GROUP BY campusid)
我不能这样做,因为它返回了多行。我不确定如何让它在UPDATE中一次只输出一行,或者如果在CREATE TABLE命令中有更简单和更好的方法来执行此操作。
答案 0 :(得分:2)
我为你的问题创建了一个小型演示......
/*Demo table....*/
create table mtp (rno integer,name varchar(max))
/*Demo Data....*/
insert into mtp values (1,'a')
insert into mtp values (1,'b')
insert into mtp values (2,'c')
insert into mtp values (2,'d')
insert into mtp values (2,'e')
/* Select Result, use this countid column for your new table...*/
select
COUNT(*) OVER (PARTITION BY rno)as countid
,rno
,name
From mtp
答案 1 :(得分:0)
您可以尝试删除GROUP BY
子句。它将返回多行,即为每个campus_id计数。
答案 2 :(得分:0)
将表格创建为:
CREATE TABLE tempfact1 AS
( SELECT courseID,appid,campusid,COUNT(*) TNA
FROM(
SELECT coursesloc.courseID, preferences.appid, campuses.campusid
FROM coursesloc, preferences, campuses
WHERE coursesloc.courseID = preferences.courseID AND coursesloc.campusi=campuses.campusid AND preferences.prefaccepted = 'Y' ) GROUP BY campusid
);
如果有任何语法错误,请更正