0

我是 SQL 新手,目前遇到我的 sql 标题中所述的错误。

这是我的 SQL 查询:

SELECT APPLICANT.APPNUM,APPLICANT.APPNAME,COUNT(APPLICATION.APPCNAPPNUM) AS "Total No. of Positions Applied"
FROM APPLICANT,APPLICATION
WHERE APPLICANT.APPNUM = APPLICATION.APPCNAPPNUM;

这是创建语句:

CREATE TABLE    APPLICANT (
appNum      varchar2(10)    not null,
appName     varchar2(70),
appDOB      date,
appCity     varchar2(70),
appStreet       varchar2(70),
appHouseNum varchar2(10),
constraint applicant_Pkey primary key (appNum)
);

CREATE TABLE    APPLICATION (
appcnPosNum     varchar2(10)    not null,
appcnPosStOffrDt    date        not null,
appcnAppNum     varchar2(10)    not null,
appcnDt         date,
constraint application_Pkey primary key (appcnPosNum, appcnPosStOffrDt, appcnAppNum),
constraint application_Fkey1 foreign key (appcnPosNum, appcnPosStOffrDt) references
POSITION(posNum, posStartOfferDt),
constraint application_Fkey2 foreign key (appcnAppNum) references APPLICANT(appNum)
);

有人可以给我任何有关如何解决此错误的建议吗?

4

2 回答 2

3

像这样使用GROUP BY

SELECT APPLICANT.APPNUM,APPLICANT.APPNAME,COUNT(APPLICATION.APPCNAPPNUM) AS "Total No. of Positions Applied"
FROM APPLICANT,APPLICATION
WHERE APPLICANT.APPNUM = APPLICATION.APPCNAPPNUM
GROUP BY APPLICANT.APPNUM,APPLICANT.APPNAME

也可以使用INNER JOIN旧式多表来代替旧式多表,例如:

SELECT APPLICANT.APPNUM,APPLICANT.APPNAME,COUNT(APPLICATION.APPCNAPPNUM) AS "Total No. of Positions Applied"
FROM APPLICANT
INNER JOIN APPLICATION
ON APPLICANT.APPNUM = APPLICATION.APPCNAPPNUM
GROUP BY APPLICANT.APPNUM,APPLICANT.APPNAME
于 2013-10-30T13:43:18.490 回答
1

每当您有一个聚合函数(如 COUNT)时,您都需要在查询中包含一个 GROUP BY 子句,该子句包含“SELECT”投影中的所有非聚合字段。对于这种特定情况,您需要执行以下操作:

SELECT APPLICANT.APPNUM,APPLICANT.APPNAME,COUNT(APPLICATION.APPCNAPPNUM) AS "Total No. of     Positions Applied"
FROM APPLICANT,APPLICATION
WHERE APPLICANT.APPNUM = APPLICATION.APPCNAPPNUM
GROUP BY APPLICANT.APPNUM, APPLICANT.APPNAME;
于 2013-10-30T13:43:11.400 回答