编辑:ORA-00936:缺少[ORA-00933:SQL命令未正确结束]的表达式编辑
[编辑]我被告知查询中有一个子查询,下面是我的想法和现在要做的工作。[新代码]编辑:ORA-00936:缺少[ORA-00933:SQL命令未正确结束]的表达式编辑,sql,oracle,ora-00933,ora-00936,Sql,Oracle,Ora 00933,Ora 00936,[编辑]我被告知查询中有一个子查询,下面是我的想法和现在要做的工作。[新代码] SELECT P.prodid, P.prodname, SUM(O.qtysold) AS "TOTAL SALES" FROM ORDERLINE O INNER JOIN PRODUCT P ON O.prodid = P.prodid INNER JOIN ALLOCATION A ON P.prodid = A.prodid GROUP BY P.prodid, P.prodname HAV
SELECT P.prodid, P.prodname, SUM(O.qtysold) AS "TOTAL SALES"
FROM ORDERLINE O
INNER JOIN PRODUCT P
ON O.prodid = P.prodid
INNER JOIN ALLOCATION A
ON P.prodid = A.prodid
GROUP BY P.prodid, P.prodname
HAVING (SELECT AVG(score) AS score
FROM QUALITYCHECK
HAVING score >= 2)
ORDER BY 3 ASC;
[原件]
所以我一直在尝试用不同的方法来编写代码,以得到正确的结果。我认为这是我最准确的一个,如果它有效的话:
SELECT P.prodid, P.prodname, SUM(O.qtysold) AS "TOTAL SALES"
FROM ORDERLINE O
INNER JOIN PRODUCT P
ON O.prodid = P.prodid
INNER JOIN ALLOCATION A
ON P.prodid = A.prodid
GROUP BY P.prodid, P.prodname
WHERE (SELECT AVG(score) FROM QUALITYCHECK) >= 2
ORDER BY 3 ASC;
~z~错误是第8行~
所以,让我解释一下我想要实现的目标。我试图从Orderline表中获取已售出产品的数量,但仅限于产品的质量检查分数平均值大于2的情况。我想尝试让这项工作,但如果有另一种方法,所有的建议都是欢迎的
我也有另一种方法,但它给我的结果是3和15,而不是1和5,我想我也会把它放在这里,以防任何人都能解决这个问题
SELECT P.prodid, P.prodname, SUM(O.qtysold) AS "TOTAL SALES"
FROM ORDERLINE O
INNER JOIN PRODUCT P
ON O.prodid = P.prodid
INNER JOIN ALLOCATION A
ON P.prodid = A.prodid
INNER JOIN QUALITYCHECK Q
ON A.prodid = Q.prodid
GROUP BY P.prodid, P.prodname
HAVING AVG(Q.score) >= 2
ORDER BY 3 ASC;
提前感谢:您的第二个问题似乎值得继续。您得到了错误的总和,因为订单行被联接的次数太多
Try this
SELECT P.prodid, P.prodname, SUM(O.qtysold) AS "TOTAL SALES"
FROM ORDERLINE O
INNER JOIN PRODUCT P
ON O.prodid = P.prodid
INNER JOIN ALLOCATION A
ON P.prodid = A.prodid
INNER JOIN QUALITYCHECK Q
ON A.prodid = Q.prodid AND AVG(Q.score) >= 2
GROUP BY P.prodid, P.prodname
ORDER BY 3 ASC;
尝试单独对产品和质量进行分组:
SELECT P.prodid, P.prodname, SUM(O.qtysold) AS "TOTAL SALES"
FROM ORDERLINE O
INNER JOIN (
select P.prodid, P.prodname, p.prodid
FROM PRODUCT P
INNER JOIN QUALITYCHECK Q ON p.prodid = Q.prodid
GROUP BY P.prodid, P.prodname, p.prodid
HAVING AVG(Q.score) >= 2) P ON O.prodid = P.prodid
INNER JOIN ALLOCATION A ON P.prodid = A.prodid
ORDER BY 3
WHERE
需要在groupby
之前,这确实消除了错误,但没有给我任何结果。选择了0行。您的新语句给了我以下错误ORA-00934:此处不允许使用组函数嘿,伙计,我知道您试图执行的操作,但这会导致左右和中间出现一些错误。我想理解我的表格会澄清我错了一个字符-现在试试。如果不起作用,告诉我错误消息。此外,如果您需要适当的帮助,请发布您的表模式,最好是使用