我有这样的陈述:
SELECT f.column1, 0.9*sum(s.column2) FROM first f, second s WHERE f.colum1 = f.column1*0.9*sum(s.colum2)
基本上我想做的是将“' first' column1中的表,由0.9 * sum(s.colum2)表示,即第二个表的column2中的值之和乘以0.9。
我自己测试了总和* 0.9部分并且它有效但在WHERE条件之后它不起作用。谁能告诉我这样做的正确方法?现在我得到的错误是:
could not prepare statement (1 misuse of aggregate: sum())
答案 0 :(得分:1)
您的答案可能是使用HAVING
代替WHERE
:
WITH f AS (SELECT 12 AS column1 FROM dual),
s AS (SELECT 33 AS column2 FROM dual)
SELECT f.column1, 0.9*SUM(s.column2) FROM f,s
HAVING f.column1 = f.column1*0.9*SUM(s.column2);
但是声明WHERE f.colum1 = f.column1*0.9*sum(s.colum2)
的想法是什么?
它比较第一个colunm中行的值,并将它们与相同的值乘以0.9*SUM(s.colum2)
进行比较。因此,如果0.9*SUM(s.colum2) != 1
0.9*SUM(s.colum2) == 1
和所有行,则查询将不返回任何内容。
答案 1 :(得分:0)
我最终想出来,如果有人有兴趣,我将代码更改为:
SELECT f.column1*0.9*sum(s.column2) FROM first f, second s
我没有在WHERE条件中进行列间运算,而是在SELECT关键字后列出列名时简单地完成了它,并且工作正常