Имея запрос для сравнения - PullRequest
       2

Имея запрос для сравнения

0 голосов
/ 10 октября 2011

Мне нужно сравнить сумму одного столбца, это может быть меньше или равно, чем другое значение в другой таблице. Итак, у меня есть это, но я не знаю, как сделать синтаксис

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 голосов
/ 10 октября 2011

Синтаксически, вы можете использовать что-то вроде этого:

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

Теперь добавьте это (таблицы и столбцы) в вашу схему, так как приведенное выше должно дать вам представление о том, что такое синтаксис для выполнения такогозадача.

0 голосов
/ 10 октября 2011

Похоже, вы просто хотите условия в предложении 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)

Я не тестировал, поэтому могут быть небольшие синтаксические ошибки.

0 голосов
/ 10 октября 2011

Я не знаю, будет ли это генерировать правильный вывод, но в целом, когда вы делаете 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...