SELECT DISTINCT
AM.programid,
AM.ProjectNumber,
AM.AppID,
AM.DateCreated,
CASE WHEN AM.applicationentryflag = 210
AND YEAR(App646.Application_Received_Date) = CONVERT(INT,@PY)
THEN CAST(CONVERT(VARCHAR(10),App646.Application_Received_Date,101) AS DATETIME)
WHEN AM.applicationentryflag <> 210
AND YEAR(AM.datecreated) = CONVERT(INT,@PY)
THEN CAST(CONVERT(VARCHAR(10),AM.datecreated,101) AS DATETIME)
END AS [Date_App_Rec]
执行此代码时出现以下错误:
CASE
规范中至少有一个结果表达式必须是 除NULL
常量之外的表达式。
答案 0 :(得分:1)
当SQL无法推断某个类型时会发生此错误,这意味着您的case
个表达式中的所有结果都为null
,例如:
SELECT CASE WHEN 1 = 0 THEN NULL ELSE NULL END
我使用静态date
测试了您的Case语句,但似乎没有问题。 (但是,我不确定您为什么要将date
转换为varchar(10)
然后转回DATETIME
)
SELECT CAST(CONVERT(VARCHAR(10),'2017-08-31',101) AS DATETIME)
SELECT CAST(CONVERT(VARCHAR(10),'2017-08-31',101) AS DATETIME)
因此我怀疑错误来自您向我们展示的代码。