当我使用以下代码时,出现错误"表 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 没有意义。
如果这两个选项都不是您想要的,请澄清问题!
此处不能引用zp
和et
表:
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