在SQL中,如果某些列返回“Y”、“N”或“L”,如何显示不同的值,

在SQL中,如果某些列返回“Y”、“N”或“L”,如何显示不同的值,,sql,Sql,如果某些列返回“Y”、“N”或“L”,如何显示不同的值, 例如 INACT\u IND列返回“Y”,但我需要为用户显示“NOT ACTIVE”。案例“Y”,返回“未激活” 我做了一个CASE函数,但它返回了一个错误,我的代码如下: select USR.LOGIN_ID, USR.NAME, "Active or Inactive" = (USR.INACT_IND), "Created Date" = (USR.REC_CREATE_DATE) FROM USR where CASE W

如果某些列返回“Y”、“N”或“L”,如何显示不同的值, 例如 INACT\u IND列返回“Y”,但我需要为用户显示“NOT ACTIVE”。案例“Y”,返回“未激活”

我做了一个CASE函数,但它返回了一个错误,我的代码如下:

select USR.LOGIN_ID, USR.NAME, "Active or Inactive" = (USR.INACT_IND), 
"Created Date" = (USR.REC_CREATE_DATE)
FROM USR
where 
CASE 
WHEN USR.INACT_IND='N' THEN 'ACTIVE'
WHEN USR.INACT_IND='Y' THEN 'NOT ACTIVE'
WHEN USR.INACT_IND='L' THEN 'LOCKED'
END

案例应在SELECT语句中,在FROM之前:

SELECT USR.LOGIN_ID, USR.NAME, USR.REC_CREATE_DATE AS CREATE_DATE,
CASE 
WHEN USR.INACT_IND='N' THEN 'ACTIVE'
WHEN USR.INACT_IND='Y' THEN 'NOT ACTIVE'
WHEN USR.INACT_IND='L' THEN 'LOCKED'
END AS A_I
FROM USR

此外,还需要使用AS来定义列名。

您的case语句在错误的行中

select USR.LOGIN_ID,
   USR.NAME,
   "Active or Inactive" = (CASE
     WHEN USR.INACT_IND = 'N' THEN
      'ACTIVE'
     WHEN USR.INACT_IND = 'Y' THEN
      'NOT ACTIVE'
     WHEN USR.INACT_IND = 'L' THEN
      'LOCKED'
   END),
   "Created Date" = (USR.REC_CREATE_DATE)
FROM USR
   select USR.LOGIN_ID, 
          USR.NAME, 
          USR.INACT_IND AS ActiveOrInactive, -- This is an Alias
          USR.REC_CREATE_DATE as CreatedDate -- This is an alias
          CASE 
                WHEN USR.INACT_IND='N' THEN 'ACTIVE'
                WHEN USR.INACT_IND='Y' THEN 'NOT ACTIVE'
                WHEN USR.INACT_IND='L' THEN 'LOCKED'
                Else USR.INACT
                END as Indicator

    FROM USR

是否希望行中仅包含“N”、“Y”和“L”USR.INACT\u IND值?如果没有,请删除WHERE条款:


注意:这是一个简单的大小写表达式,可以节省一些输入

如果您想将其选中,则大小写需要在选择列表中,而不是在WHERE子句中。大小写表达式,而不是语句中。它返回一个值。
select USR.LOGIN_ID, USR.NAME, USR.INACT_IND as "Active or Inactive",
       USR.REC_CREATE_DATE as CREATE_DATE,
       CASE USR.INACT_IND
           WHEN 'N' THEN 'ACTIVE'
           WHEN 'Y' THEN 'NOT ACTIVE'
           WHEN 'L' THEN 'LOCKED'
       END
FROM USR
WHERE USR.INACT_IND IN ('N', 'Y', 'L')