有查询比较

时间:2011-10-10 17:41:47

标签: sql sql-server-2008

我需要比较一列的总和,这可能小于或等于其他表中的其他值。所以我有这个,但我不知道如何制作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)

我该怎么做?

感谢

3 个答案:

答案 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)

我没有测试过,因此可能是小的语法错误。