我是Oracle的新手,希望结果包含基于值的多个计数。例如:每个结果合并Group BY和多个计数
SELECT p.name, count(f.id) as eaten_apples, count(f.id) as eaten_oranges
FROM food f, people p
WHERE f.pid=p.pid
AND f.id = 'apple' OR f.id = 'orange'
GROUP BY p.name;
显然具有计数(f.id)有两次将各自产生相同的结果,但愿望是具有每吃的食物的类型的一个计数。苹果和橘子。预期结果可能如下所示:
[0] =>
name : john
eaten_apples: 3
eaten_oranges: 1
[1] =>
name : sam
eaten_apples: 0
eaten_oranges: 9
...
换句话说,每个结果有多个计数。在这种情况下,一个人吃的食物数量。
我的查询现在返回两个每个名称的结果,我可能在SQL之外组合,但我想从SQL结果每个名称得到一个结果。
谢谢,但我可以在两排让他们了,但应用程序将运行得更好如果在一个完成。我认为在Oracle中执行起来太复杂了,或者更慢? – LookingToLearn
@lookingtolearn,我添加到我的答案一个工作解决方案,但我不知道如果应用程序会更好。一个好的数据库模型不应该为了获得消费应用程序期望的结果而进行透视或转置。 – Spade
谢谢!我结束了与ORA-00904:“id”:无效的标识符。但是,将“select name,id”更改为“select *”使其起作用。我不知道为什么,但最终通过广泛的反复试验获得了他们的结果。再次,谢谢! – LookingToLearn