SELECT ahour eid eentrance_name COALESCEerksl 0 AS rksl COALESCEecksl 0 AS ckslFROM SELECT hour AS hour FROM generate_series0 24 AS hour aLEFT JOIN SELECT bid bentrance_name dhourCOALESCEdr
以下是修改后的SQL语句:
SELECT a.hour, e.id, e.entrance_name, COALESCE(e.rksl, 0) AS rksl, COALESCE(e.cksl, 0) AS cksl
FROM (
SELECT hour AS hour
FROM generate_series(0, 24) AS hour
) a
LEFT JOIN (
SELECT b.id, b.entrance_name, d.hour, COALESCE(d.rksl, 0) AS rksl, COALESCE(d.cksl, 0) AS cksl
FROM (
SELECT *
FROM entrance_management
) b
LEFT JOIN (
SELECT
c.entrance_id, c.hour,
SUM(CASE WHEN c.lx = 1 THEN c.sl ELSE 0 END) AS rksl,
SUM(CASE WHEN c.lx = 2 THEN c.sl ELSE 0 END) AS cksl
FROM real_traffic_statistics c
WHERE
c.YEAR = 2023
AND c.MONTH = 6
AND c.DAY = 26
GROUP BY c.entrance_id, c.hour
) d ON b.id = d.entrance_id AND a.hour = d.hour
WHERE b.zt = '1'
) e ON a.hour = e.hour;
在修改后的SQL中,我添加了一个额外的条件 AND a.hour = d.hour,这样可以确保每个出入口的每小时数据都能正确匹配。此外,我还将 COALESCE(e.rksl, 0) 和 COALESCE(e.cksl, 0) 应用到了主查询的 SELECT 子句中,以确保如果没有数据的话,数量会被设置为0
原文地址: https://www.cveoy.top/t/topic/hAQ8 著作权归作者所有。请勿转载和采集!