0
我正在編寫Oracle SQL以獲取詳細和總結報告。我的詳細報告是完成示例輸出行將是:SQL Sum不能正常工作
domain name, student name, completed
Domain Name, Student Name, Y
Domain Name, Student Name, N
請注意完成的列是「Y」或「N」。
問題出在我的總結報告上。我按域名分組,並將「Y」和「N」的詳細報告列「已完成」分割爲「完成」和「未完成」的摘要列。我將「Y」更改爲1或0,將「N」更改爲1或0,然後將每列SUM。
我的詳細報告返回17k行,我的摘要報告返回174行,但總和不正確。摘要報告的示例輸出是三種類型之一:「域名,1,0」或「域名1,1」或「域名,0,0」。這些行應該有像「域名,254,110」等數字。
任何幫助或代碼的指導,將不勝感激。
SELECT inner_clause.dmn_id,
SUM(decode(status_remday,'Y',1,0)) COMPLETED,
SUM(decode(status_remday,'N',1,0)) INCOMPLETED
FROM
(SELECT DISTINCT q.qual_id,
q.qual_title,
s.dmn_id,
SUBSTR(pkg_student.get_delm_stud_qual_stat_rmday(sq.stud_id, sq.qual_id, sq.qual_id),1,1) AS status_remday
FROM pa_stud_qual sq,
pa_student s,
pa_user_preference userPref,
pa_qual q
WHERE sq.stud_id = s.stud_id
AND s.stud_id = userPref.user_id(+)
AND userPref.user_type(+)='S'
AND sq.qual_id = q.qual_id
/** and q.qual_id in [CurriculumSearch] */
/** and s.stud_id in [UserSearch] */
/** and s.notactive = [UserStatus] */
/** and [security:pa_student s] */
) inner_clause
GROUP BY inner_clause.dmn_id
ORDER BY inner_clause.dmn_id
**首先**你不需要'q.qual_id,q.qual_title'。 **第二**。如果你的小組沒有返回你想要的結果,檢查只是內部子句組看起來不錯**最後**推廣使用'JOIN' sintaxis,Aaron Bertrand寫了一篇很好的文章[壞習慣踢:用舊(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx)。 –
去@JuanCarlosOropeza第二點。當運行它自己的時候,'inner_clause'的結果看起來像你期望的那樣嗎?也就是說,您是否從該自定義函數的懸停中獲得值「Y」和「N」?它是否給你超過2或3個結果? – JNevill
我建議刪除q.qual_id和q.qual_title - 謝謝。然後我刪除了GROUP BY來檢查內部的SELECT。內部條款 SUBSTR(包)AS status_remday確實輸出Y和N,並且外部選擇 解碼(status_remday,'Y',1,0)AS COMPLETE, decode(status_remday,'N',1,0)AS INCOMPLETE 沒有輸出1和0,如預期的 結果如下: 第一個域名,Y,1,0 第二個域名,N,0,1 Inner Select似乎工作正常。 –