我有这个SQL查询:
SELECT childUsers.userName,
(IF(childUsers.modified >= Convert(datetime, '2018-11-15')
BEGIN
CASE
WHEN childUsers.ProgressID = 1 THEN 'New Level One'
WHEN childUsers.ProgressID = 2 THEN 'New Level One Completed'
WHEN childUsers.ProgressID = 3 THEN 'New Level Two'
WHEN childUsers.ProgressID = 4 THEN 'New Level Two Completed'
ELSE 'Has Not Started'
END
ELSE
BEGIN
CASE
WHEN childUsers.ProgressID = 1 THEN 'Introduction'
WHEN childUsers.ProgressID = 2 THEN 'Introduction Completed'
WHEN childUsers.ProgressID = 3 THEN 'Unit 1'
WHEN childUsers.ProgressID = 4 THEN 'Unit 1 Completed'
ELSE 'Has Not Started'
END) as furthestSectionVisited
FROM childUsers
WHERE childUsers.usergroupId=112888
我想设置一个条件IF语句,该语句将检查表中的特定字段,如果修改后的表比特定日期还旧,则返回的值将需要不同。
在这种情况下,我会出现错误,是否缺少某些内容或需要修改的内容?
您将需要在此处使用嵌套的大小写表达式。IF不是将动态段添加到查询的方法。
SELECT childUsers.userName,
case when childUsers.modified >= Convert(datetime, '2018-11-15') then
case childUsers.ProgressID
when 1 THEN 'New Level One'
WHEN THEN 'New Level One Completed'
WHEN THEN 'New Level Two'
WHEN THEN 'New Level Two Completed'
ELSE 'Has Not Started'
END
ELSE
CASE childUsers.ProgressID
WHEN 1 THEN 'Introduction'
WHEN 2 THEN 'Introduction Completed'
WHEN 3 THEN 'Unit 1'
WHEN 4 THEN 'Unit 1 Completed'
ELSE 'Has Not Started'
END
END as furthestSectionVisited
FROM childUsers
WHERE childUsers.usergroupId=112888
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句