我编写了以下代码,期望在 CASES 中返回 0 和 1,但我得到的是 1 和 NULL。
有什么获取 0 的建议吗?
DECLARE @Today DATETIME
SET @Today = FLOOR(CAST(GETDATE() AS FLOAT))
SELECT*
FROM
( SELECT e.[Employeenr],
e.[Name],
dc.[Code],
c.[Description],
(CASE WHEN ec.[date] IS NULL THEN 0 ELSE 1 END) as 'Date',
(CASE WHEN dc.[creationdate] IS NULL THEN 0 ELSE 1 END) as 'Aanwezig'
FROM HR_Employee e
left join HR_EmployeeDriverLicense d ON e.[Employeenr] = d.[Employee]
left join DriverLicenseCategory dc ON d.[DriverLicenseCategory] = dc.
[DriverLicenseCategorynr]
left join HR_EmployeeCertificate ec ON e.[Employeenr] = ec.[Employee]
left join HR_Certificate c ON ec.[Certificate] = c.[Certificatenr]
left join HR_Function f ON e.[Function] = f.[Functionnr]
WHERE (e.[Date_out_of_employment] IS NULL
or e.[Date_out_of_employment] >= @today
or e.[Licensenumber] is not null)
and e.[LicenseExpireDate] is not null
and c.[Description] is not null
and ec.[Certificate] <> 5
and f.[Functionnr] = 1
) AS SRC
PIVOT
( MAX(Aanwezig)
FOR [Code] IN ([C], [C1], [C1E], [CE])) AS PivotTable
PIVOT
( MAX ([Date])
FOR [Description] IN ([Kooiaap certificaat], [ADR Certificaat])) AS PivotTable
最佳答案
当您执行 PIVOT
时,您将得到行的 NULL
,这些行没有相应 PIVOT
列的值。不幸的是,如果你想得到 0
而不是 NULL
,你需要在最后的 SELECT
语句中添加这个逻辑。
像这样:
SELECT ISNULL([Kooiaap certificaat], 0), ISNULL([ADR Certificaat], 0)
关于sql - ( CASE WHEN [date] IS NULL THEN 0 ELSE 1 END)在我的枢轴中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63408029/