我是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