该存储过程结果存储在总共查询的基础上,如果总共没有任何记录 那么结果就要0,如何管理空值。数据透视表在存储过程中使用视图管理空值
CREATE PROCEDURE dbo.Procedure_Summary
@UserID INT ,
@Year INT
AS
BEGIN
/* Procedure body */
SELECT UserID,
UserName ,
[Marks1] as 'English',
[Marks2] as 'Maths',
[Marks3] as 'Science'
FROM
(
SELECT l.UserID,
e.UserName ,
s.SubjectName,
TotalMarks AS Total
FROM ViewLeave l
INNER JOIN SubjectType s ON s.SubjectID = l.SubjectID
INNER JOIN UserInfo e ON e.UserID = l.UserID
WHERE ((l.Result = 'Pass')
AND (e.UserID = @UserID)
AND l.[year][email protected])
GROUP BY s.SubjectName,l.UserID, e.UserName ,TotalDays
)ps
pivot
(
SUM(Total)
FOR SubjectName IN ([Marks1],[Marks2],[Marks3])
) AS pvt
END
当前结果和预期的结果是因为 -
Accoding to current stored procedure result are as ,
UserID UserName English Maths Science
105 ABC 25 0 36
106 XYZ 26 88 88
But i want if all three subject marks are 0 means total are zero and then show
as , also show non zero record
UserID UserName English Maths Science
109 QWE 0 0 0
您可以发布为每个表和所期望的结果一些数据?将'INNER JOIN'改为'LEFT JOIN'可能就足够了。 – Taryn
LEFT JOIN尝试过,但没有得到任何结果 –
我的建议是发布一些样本数据和期望的结果。或者更好的方式是用工作数据模型创建一个[sql小提琴](http://sqlfiddle.com)。 – Taryn