sql - case 语句中的嵌套子查询返回 null
问题描述
我正在尝试运行一个嵌套的 sql 子查询,如果 datetime 列中的年份值不是 1799,则从原始表返回一个值,如果值为 1799,则从另一个表中的另一列返回最大值。我知道我我可能做了一些愚蠢的事情,但是当我应该得到日期时,我只会在“注销时间”列中得到 NULL。这是我的代码的简单版本:
SELECT
CASE WHEN year(us.logofftime) = '1799'
THEN
(SELECT max(ua.time)
FROM useractivity ua
WHERE ua.usersessionid = us.usersessionid)
ELSE us.logofftime
END) AS logofftime,
us.operatingsystem, us.country,
us.source, us.logoffmethod
FROM UserSession us
WHERE us.logontime > '2017-07-01'
AND us.clientid = '12455';
编辑:我已将最后两行添加到查询中。
解决方案
你必须有很多NULL
值logofftime
——如果值是NULL
,结果将是NULL
。
因此,也许您也打算替换这些值:
SELECT (CASE WHEN year(us.logofftime) = 1799 OR us.logofftime IS NULL
THEN (SELECT max(ua.time)
FROM useractivity ua
WHERE ua.usersessionid = us.usersessionid
)
ELSE us.logofftime
END) AS logofftime,
us.operatingsystem, us.country,
us.source, us.logoffmethod
FROM UserSession us;
推荐阅读
- php - 在另一个while循环中使用while循环的结果
- html - 无法在 iOS 中使用
- python - 如何使用 Matplotblib 和 PyQt5 将数据游标添加到条形图中?
- recursion - 当递归过程描述迭代过程时,是尾递归吗?
- ios - Kingfisher nil 同时展开可选值
- swift - iOS Swift:关闭使用“显示详细信息”呈现的视图控制器
- php - 在 Foreach 循环 PHP 中从数组中读取多个值
- python - 使用 python 获取股票数据 - 不使用 quandl
- azure - 如何在使用 Azure CLI 创建新的 Cosmos DB 集合时指定 10GB 的固定大小
- php - Codeigniter 电子邮件库发送空白电子邮件或 html 源代码