Sqlite3查询问题:ticket值在无数据日期重复,求修正方案
修正SQLite3查询以处理缺失的Ticket数据问题
你的问题主要出在两个核心点:一是t3子查询未按日期分组,导致返回全局ticket总数并重复显示;二是使用隐式内连接会过滤掉t3中无对应日期的行,而我们需要保留这些日期并将ticket字段设为0或空值。
以下是修正后的查询语句:
SELECT t1.hurtos, t2.fallas, COALESCE(t3.ticket, 0) AS ticket, t1.fecha_carga FROM (SELECT COUNT(ttc) AS hurtos, fecha_carga FROM data_incidencia WHERE campo_key_id = 2 GROUP BY fecha_carga) t1 JOIN (SELECT COUNT(ttc) AS fallas, fecha_carga FROM data_incidencia WHERE campo_key_id = 1 GROUP BY fecha_carga) t2 ON t1.fecha_carga = t2.fecha_carga LEFT JOIN (SELECT COUNT(ticket) AS ticket, fecha_solicitud AS fecha_carga FROM data_ticket GROUP BY fecha_solicitud) t3 ON t1.fecha_carga = t3.fecha_carga;
关键修正说明:
- 修复
t3分组逻辑:给t3子查询添加GROUP BY fecha_solicitud,让每个日期单独计算对应的ticket数量,避免全局总数重复填充。 - 改用LEFT JOIN保留所有日期:通过左连接关联
t3,确保t1/t2中存在但t3中缺失的日期行不会被过滤掉。 - COALESCE处理空值:
COALESCE(t3.ticket, 0)会将空值自动替换为0,完美匹配你期望的显示效果;如果偏好显示空值,直接使用t3.ticket即可。
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

