我需要比较一列的总和,这可能小于或等于其他表中的其他值。所以我有这个,但我不知道如何制作sintax
SELECT sembrado.f_AreaSiembra, tenencia.f_AreaDedicadaCultivos
FROM Clt_Sembrado as sembrado
INNER JOIN Fnc_TenenciaUsoTierra as tenencia ON sembrado.c_Fk_IdBoleta = tenencia.c_Fk_IdBoleta
HAVING (SUM(sembrado.f_AreaSiembra) <= tenencia.f_AreaDedicadaCultivos) AND (sembrado.c_Fk_IdBoleta = 45550711 AND tenencia.c_Fk_IdBoleta = 45550711)
我该怎么做?
感谢
答案 0 :(得分:0)
我不知道这是否会生成正确的输出,但一般情况下,当您执行HAVING
时,您必须拥有GROUP BY
,因此您的查询应如下所示:
SELECT sembrado.f_AreaSiembra, tenencia.f_AreaDedicadaCultivos
FROM Clt_Sembrado as sembrado INNER JOIN
Fnc_TenenciaUsoTierra as tenencia ON sembrado.c_Fk_IdBoleta = tenencia.c_Fk_IdBoleta
group by sembrado.f_AreaSiembra,tenencia.f_AreaDedicadaCultivos
HAVING (SUM(sembrado.f_AreaSiembra) <= tenencia.f_AreaDedicadaCultivos) AND (sembrado.c_Fk_IdBoleta = 45550711 AND tenencia.c_Fk_IdBoleta = 45550711)
答案 1 :(得分:0)
从语法上讲,你可以使用这样的东西:
SELECT t1.A, SUM(t1.C), SUM(t2.D)
FROM table t1
JOIN table t2 ON t1.A = t2.A
GROUP BY t1.A // or group-by any other column that is applicable to the schema
HAVING (SUM(t1.C) <= SUM(t2.D))
现在,将此(表和列)放入您的模式中,因为上面的内容可以让您了解执行此类任务的语法是什么。
答案 2 :(得分:0)
听起来你只想要where子句中的条件:你仍然可以在聚合中使用WHERE。
SELECT
SUM(sembrado.f_AreaSiembra) as SummedArea,
(SELECT SUM(f_AreaDedicadaCultivos)
FROM Fnc_TenenciaUsoTierra
WHERE c_Fk_IdBoleta = sembrado.c_Fk_IdBoleta)
AS AreaDedicadaCultivos
FROM
Clt_Sembrado as sembrado
WHERE
sembrado.c_Fk_IdBoleta = 45550711
GROUP BY sembrado.c_Fk_IdBoleta
HAVING SUM(sembrado.f_AreaSiembra) <= (SELECT SUM(f_AreaDedicadaCultivos)
FROM Fnc_TenenciaUsoTierra
WHERE c_Fk_IdBoleta = sembrado.c_Fk_IdBoleta)
我没有测试过,因此可能是小的语法错误。