SELECT idteam,
job,
price,
COUNT('X') as INFORMS,
SUM(COUNT('X') * price) as TOTAL
FROM REP
JOIN COSTS ON (job = categ AND to_number(to_char(REP,'YYYY')) = year)
GROUP BY idteam, job, price, TOTAL
ORDER BY IDTEAM;
我不知道为什么如果我在GROUP BY中写TOTAL并且sql发给我错误..标识符无效。
我不知道如何解决这个问题。
感谢。
答案 0 :(得分:0)
对不起我的不好解释。
价格与工作有关。例如,作业1的价格为30,作业2的价格为56等等。
我想得到每个idteam的总价。
例如:
我在JOIN中使用另一个表,因为价格在其他表中包含作业(分类) enter image description here
答案 1 :(得分:0)
专栏" TOTAL"是SUM的别名(COUNT(' X')*价格)。 它不能用作GROUP BY子句中的列标识符。你必须说GROUP BY SUM(COUNT(' X')*价格),因为" TOTAL"在分组时是未知/不是列。 使用GROUPING后,您可以参考" TOTAL"在HAVING子句中。 在任何情况下,您使用的SQL的版本/类型都不允许。
另外,你为什么要COUNTing' X'? X是固定值,不依赖于任何列。如果您想计算每一行,只需使用Count(1)或Count(*)。此外,您不需要SUM COUNT。 COUNT已经加总了。
您应该发布REP和COSTS的结构。您的关联图片没有足够的信息来支持您撰写的查询。
select
idteam,
-- job, /* not selected since it would need to be grouped*/
sum(price) as 'theSUM'
from REP
join COSTS
on REP.categ = COSTS.job
and COSTS.year = 2016
group by idteam
order by idteam