SQL使用CASE WHEN查询user_activity_log表的语法补全求助
SQL问题解答
你写的查询语句里???位置应填入hitdatetime。另外原语句有两处细节错误,会导致返回结果不符合需求,需要同步修正:
- 第一个
CASE分支的ELSE后写的'NULL'是带单引号的字符串,不是SQL中的真正空值,需要去掉单引号写为NULL,否则非visit动作的行返回的是字符串"NULL",而非要求的null空值。 - 第二个
CASE分支里的'1'、'0'是字符串格式,如果需要返回数值类型的标识,建议去掉单引号直接写数值1和0。
修正后的完整可运行SQL如下:
SELECT client_id, CASE WHEN action = 'visit' THEN hitdatetime ELSE NULL END as visit_dt, CASE WHEN action = 'registration' THEN 1 ELSE 0 END as is_registration FROM user_activity_log;
针对你提供的样例数据,执行上述SQL后的返回结果:
| client_id | visit_dt | is_registration |
|---|---|---|
| 17 | 2020-09-18 11:30:43 | 0 |
| 17 | NULL | 1 |
| 17 | 2020-09-18 11:31:16 | 0 |
内容的提问来源于stack exchange,提问作者Roman Bolshevik
相关产品推荐
相关产品推荐

