这是我的简单查询。如果我查询不存在的记录,那么我将不会返回任何内容。我希望在那个场景中返回0。 请帮助我。谢谢你提前 这是我的简单查询。如果我查询不存在的记录,那么我将不会返回任何内容。我希望在那个场景中返回0。 请帮助我。谢谢你提前
SELECT *
FROM (
SELECT DISTINCT emp.EMP_CODE
,emp.EMP_NAME
,ROW_NUMBER() OVER (
PARTITION BY emp.emp_code ORDER BY emp.EFFECTIVE_FROM DESC
) AS Row
,CASE
WHEN et.DAY = 03
AND et.MONTH = 02
AND et.YEAR = 16
AND et.EMP_CODE = emp.EMP_CODE
AND et.site_id = 21
THEN et.GENERAL_SHIFT
ELSE '0'
END AS G
,CASE
WHEN et.DAY = 03
AND et.MONTH = 02
AND et.YEAR = 16
AND et.EMP_CODE = emp.EMP_CODE
AND et.site_id = 21
THEN et.FIRST_SHIFT
ELSE '0'
END AS F
,CASE
WHEN et.DAY = 03
AND et.MONTH = 02
AND et.YEAR = 16
AND et.EMP_CODE = emp.EMP_CODE
AND et.site_id = 21
THEN et.SECOND_SHIFT
ELSE '0'
END AS S
,CASE
WHEN et.DAY = 03
AND et.MONTH = 02
AND et.YEAR = 16
AND et.EMP_CODE = emp.EMP_CODE
AND et.site_id = 21
THEN et.THIRD_SHIFT
ELSE '0'
END AS T
FROM dbo.EMP_FPONM_EMPLOYEE_INFORMATION emp
LEFT JOIN dbo.EMP_FPONM_EMP_TIME_SHEET et ON emp.EMP_CODE = et.EMP_CODE
WHERE EMP.SITE_ID = 21
AND emp.DEPT_NAME = @DEPT_NAME
AND emp.STATUS = 'Present'
AND et.DAY = 03
AND et.MONTH = 02
AND et.YEAR = 16
) a
WHERE a.Row = 1
答案 0 :(得分:0)
您可以使用ISNULL
运算符执行此任务。
ISNULL
允许您执行的操作是检查SQL操作中的特定值是否为NULL
,并允许您返回其中的任何自定义值。非NULL值不受影响。它的工作原理如下:
SELECT Name, ISNULL(Department, 'Unassigned')
FROM [dbo].[Employee]
这样做,对于在department列中具有NULL
字段的任何员工,输出表将Department列值显示为Unassigned。
您也可以将整个SQL查询用作输入。
SELECT ISNULL( (SELECT MAX(Score) FROM [dbo].[Students]), 'Unchecked')
在这种情况下,如果学生表的最高分数为NULL
,我们会收到未选中的输出。
您可以找到详细的文档here。
希望这有帮助。