2011-04-13 66 views
0

我有兩個表。他們處於1:N的關係。加入總數和組

任務 - 標識 - 名稱

報告 - 標識 - 時間 - 任務id -fk

我想創建一個查詢將由任務總結報告的時間。

我想這一點,但它不工作

SELECT NAME,SUM (TIME) FROM TASKS LEFT JOIN REPORT ON TASKS.ID = REPORT.TASKID       
       GROUP BY TASKS.NAME 

其Oracle和與此查詢的時間列是結果無效。

+0

什麼是「不工作」? – dotjoe 2011-04-13 19:35:15

+0

什麼RDBMS? 'time'的數據類型是什麼?如果SQL Server和'time'大概會出現錯誤「操作數數據類型時間對於sum操作符無效」。 – 2011-04-13 19:35:50

回答

1
SELECT 
    NAME, 
    SUM(ISNULL(TIME, 0)) SumOfTime /* Time could be NULL! */ 
FROM 
    TASKS 
    LEFT JOIN REPORT ON TASKS.ID = REPORT.TASKID       
GROUP BY 
    TASKS.NAME 
+2

不是組函數忽略空值,而不是返回null?我錯過了什麼? – boisvert 2011-04-13 20:25:15

+0

@boisvert它可能更清楚,如果它只是'isnull(sum(time),0)'。但是,我懷疑表現會有明顯的差異。 – dotjoe 2011-04-19 21:27:54