我有以下的SQL問題。Oracle group by和空結果集
場景:
我有兩個表格:Change和ChangeTicket。 有1:n的關係。一個改變有cero或許多改變票。 沒有改變意味着沒有改變票。 changeTicket有一個狀態(打開/關閉/ ...) changeTicket具有一個字段,表示多長時間進行此更改。
A Change有一個公司和一個月。本月最多隻有一次更改。
我必須報告給定的公司和給定的月份總和分鐘 給定的變化。
我寫了下面的SQL語句。
select nvl(sum(service_req), 0) as SUM_REQ
from Change_Ticket, Change
where Change.company_id (+) = '0'
and Change.month (+)='07'
and Change.Id (+) = Change_Ticket.Change_Id
這是好的。
如果對於給定的月份和給定的公司,既沒有變化也沒有票 然後我得到一個空值,它被轉換爲cero usgin NVL函數。
當我想使用狀態對信息進行分組時,會出現問題。 如果我添加一個GRUP條款
select Change_Ticket.status, nvl(sum(service_req), 0) as SUM_REQ
from Change_Ticket, Change
where Change.company_id (+) = '0'
and Change.month (+)='07'
and Change.Id (+) = Change_Ticket.Change_Id
group by Change_Ticket.status
那麼我的結果是空集。 我明白,沒有狀態,然後得到的集合是 以某種方式一致,然後返回一個空的結果集。
我該如何避免這個問題。在這種情況下,我需要報告一個 空狀態和cero作爲總和。
(順便說一句,我也試圖把NVL(Change_Ticket.status, '無'),但沒有工作)
非常感謝提前。
路易斯
謝謝您的回答。不幸的是我沒有表格狀態。我只有一個列狀態。無論如何,我會盡量按照你的想法。歡迎評論。 – Luixv 2009-09-22 11:03:15