以下是修改后的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

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

原文地址: https://www.cveoy.top/t/topic/hAQ8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录