SQL,如果有条件查询

拉齐奥

我有这个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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章