You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite中日期相同时间不同时,如何用CASE语句筛选有效数据行?

解决方案

你的问题核心是用错了语句类型:CASE语句是用来生成计算列的,不能用来过滤行。要筛选符合条件的记录,应该用WHERE子句。

正确的SQL查询

如果已经存在table3,直接执行以下语句即可得到你想要的结果:

SELECT 
  "TEST RESULT_DATE" AS RESULT_DATE,
  "TEST RESULT_TIME" AS RESULT_TIME,
  DIAG_DATE,
  DIAG_TIME
FROM table3
WHERE 
  "TEST RESULT_DATE" = DIAG_DATE
  AND DIAG_TIME > "TEST RESULT_TIME";

为什么你的原代码无效?

你写的CASE语句只是对每行返回一个布尔值(符合条件返回1,不符合返回0或NULL),但并没有将不符合条件的行从结果集中排除。所以最终会返回table3的所有行,只是多了一个计算列,而不是筛选后的结果。

额外提醒:创建table3时的潜在问题

你创建table3的语句中已经加了RESULT_TIME < DIAG_TIME的条件,但最终table3里还是出现了不符合的行,可能是因为:

  • 列名不匹配:比如table1/table2中的列名是RESULT_DATE1/diagdate1,而table3生成后的列名是TEST RESULT_DATE/DIAG_DATE,可能存在别名或列名混淆的情况
  • 日期范围条件RESULT_DATE1 BETWEEN DATE(diagdate1,'-7 day') AND diagdate1允许了日期不同的记录,但你现在只关心日期相同的情况,所以后续筛选时需要加上日期相等的条件

内容的提问来源于stack exchange,提问作者mq19745422

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 04:39:26