错误"missing FROM-clause entry for table"



当我使用以下代码时,出现错误"表 zp 缺少 FROM 子句条目"。有谁知道我如何消除此错误?

SELECT SUM(zp.WP*et.GIS)
FROM (SELECT DISTINCT zp.HHNR,zp.ZIELPNR FROM mobility.zielpersonen zp
FULL OUTER JOIN mobility.etappen et
ON zp.HHNR=et.HHNR AND zp.ZIELPNR=et.ZIELPNR
) as examp

我会提出这个作为猜测:

SELECT SUM(exam.WP * exam.GIS)
FROM (SELECT DISTINCT   zp.HHNR,
                        zp.ZIELPNR, 
                        zp.WP, 
                        et.GIS
    FROM mobility.zielpersonen zp
    FULL OUTER JOIN mobility.etappen et
    ON zp.HHNR=et.HHNR AND zp.ZIELPNR=et.ZIELPNR
) as examp

这包括 DISTINCT 查询中的 WP 和 GIS,可能是您想要的,也可能不是您想要的。

但是,我认为在这种情况下最自然的方法是按 HHNR 和 ZIELPNR 分组并计算其他值的总和。这可以使用以下查询来完成:

SELECT zp.HHNR, zp.ZIELPNR, SUM(zp.WP*et.GIS) AS CalcResult
FROM mobility.zielpersonen zp
LEFT JOIN mobility.etappen et
ON zp.HHNR=et.HHNR 
AND zp.ZIELPNR=et.ZIELPNR
GROUP BY zp.HHNR, zp.ZIELPNR

我用LEFT JOIN替换了OUTER JOIN,因为我认为计算/分组 NULL 值的 SUM 没有意义。

如果这两个选项都不是您想要的,请澄清问题!

此处不能引用zpet表:

SELECT SUM(zp.WP*et.GIS)

它们只能在子查询范围内引用。

只需尝试这样做:

SELECT SUM(examp.WP*examp.GIS)
FROM (SELECT DISTINCT zp.HHNR,zp.ZIELPNR FROM mobility.zielpersonen zp
FULL OUTER JOIN mobility.etappen et
ON zp.HHNR=et.HHNR AND zp.ZIELPNR=et.ZIELPNR
) as examp

最新更新