一个SQL语句的问题!
schema:5000YEARS
下面是我用到的表的描述
SQL> desc "5000YEARS"."BuySales";
名称 空? 类型
----------------------------------------- -------- ----------------------------
ID NOT NULL CHAR(10)
BUYSALE NOT NULL CHAR(1)
MERCHANT NOT NULL CHAR(6)
STATE NOT NULL CHAR(1)
STARTDATE DATE
SENDDATE DATE
ENDDATE DATE
PRICE NUMBER(38)
SQL> desc "5000YEARS"."Parts";
名称 空? 类型
----------------------------------------- -------- ----------------------------
ID NOT NULL CHAR(10)
NAME NOT NULL VARCHAR2(20)
PARTCHAR VARCHAR2(400)
AMOUNT NUMBER(38)
SQL> desc "5000YEARS"."ContactItems";
名称 空? 类型
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(38)
CONTACTID NOT NULL CHAR(10)
PARTS NOT NULL CHAR(10)
UNITPRICE FLOAT(126)
AMOUNT NUMBER(38)
下面列出我的SQL语句
SQL> SELECT SUM(UnitPrice*Amount)
2 FROM "5000YEARS"."ContactItems","5000YEARS"."BuySales","5000YEARS"."Parts"
3 WHERE BuySales.BuySale='S'
4 AND ContactID=BuySales.ID
5 AND ContactItems.Parts=Parts.ID
6 GROUP BY Parts;
AND ContactItems.Parts=Parts.ID
*
ERROR 位于第 5 行:
ORA-00904: 无效列名
谢谢您的指点,不胜感激!!!!!!!!!!!!!
问题点数:100、回复次数:10Top
1 楼w_tsinghua()回复于 2003-06-04 13:56:17 得分 15
试试这个没有测试
SELECT SUM(UnitPrice*Amount)
2 FROM "5000YEARS"."ContactItems" ,"5000YEARS"."BuySales" ,"5000YEARS"."Parts" where
WHERE BuySales.BuySale='S'
AND ContactID=BuySales.ID
AND "ContactItems".Parts="Parts".ID
GROUP BY "ContactItems".Parts;
Top
2 楼w_tsinghua()回复于 2003-06-04 14:03:31 得分 0
估计前面的不行,你可以参照下面的,再改一改
SELECT SUM(a.UnitPrice*a.Amount)
FROM "5000YEARS"."ContactItems" a ,"5000YEARS"."BuySales" b ,"5000YEARS"."Parts" c where
WHERE b.BuySale='S'
AND a.ContactID=b.ID
AND aParts=c.ID
GROUP BY a.Parts;
Top
3 楼BlueskyWide(谈趣者)回复于 2003-06-04 14:21:24 得分 15
SELECT SUM(a.UnitPrice*a.Amount) FROM ContactItems a,BuySales b,Parts c
WHERE b.BuySale='S' AND a.CONTACTID=b.ID AND a.Parts=c.ID GROUP BY c.id;
Top
4 楼catail(我背叛了自己)回复于 2003-06-04 14:48:27 得分 0
楼上的加上方案名就好使了
w_tsinghua() 的告诉有点毛病
SQL> SELECT SUM(a.UnitPrice*a.Amount)
2 FROM "5000YEARS"."ContactItems" a ,"5000YEARS"."BuySales" b ,"5000YEARS"."Parts" c where
3 WHERE b.BuySale='S'
4 AND a.ContactID=b.ID
5 AND aParts=c.ID
6 GROUP BY a.Parts;
WHERE b.BuySale='S'
*
ERROR 位于第3行
ORA-00936: 缺少表达式
两位大侠能告诉我我错误所在吗!
太谢谢了
Top
5 楼snowy_howe(天下有雪)回复于 2003-06-04 14:55:20 得分 15
注意你语句的第2,3行重复用了2个WHERE,去掉一个再试吧
Top
6 楼catail(我背叛了自己)回复于 2003-06-04 14:55:40 得分 0
w_tsinghua()
的回复中缺一个.(点)
在后面的尝试中.已经加上了但是还是提示第3行缺少表达式Top
7 楼catail(我背叛了自己)回复于 2003-06-04 14:58:08 得分 0
那位能告诉我,我原来的语句的错误
谢谢Top
8 楼lynx(lynx)回复于 2003-06-04 15:13:15 得分 15
SELECT SUM(ci.UnitPrice*ci.Amount),ci.Parts --最好说明这两个字段属于哪张表
FROM ContactItems ci,BuySales bs,Parts p
WHERE bs.BuySale='S'
AND ci.ContactID=bs.ID
AND ci.Parts=p.ID
GROUP BY ci.Parts;
Top
9 楼Lastdrop(空杯)回复于 2003-06-04 16:25:58 得分 40
表名的大小写问题,"5000YEARS"."Parts" 告诉Oracle你的表名是区分大小写的,也就是你的表名必须是Parts,但是若表名未加双引号则表示表名不区分大小写,Oracle自动使用大写的表名PARTS.
所以改为下面的样子应该没有问题了。
SELECT SUM(UnitPrice*Amount)
FROM "5000YEARS"."ContactItems" ,"5000YEARS"."BuySales","5000YEARS"."Parts"
WHERE "BuySales".BuySale='S'
AND ContactID="BuySales".ID
AND "ContactItems".Parts="Parts".ID
GROUP BY "ContactItems".Parts;
Top
10 楼catail(我背叛了自己)回复于 2003-06-09 09:44:00 得分 0
特别感谢Lastdrop(空杯) 的回复,谢谢大家的指点。不胜感激!!!!!!!!!!Top



