я получил в таблице «EMPRESAS»Сравните различия между первой и второй строкой для группы
dbo.empresas
id | name | delegacion_id
-------------------------
1 | A | 3
2 | B | 3
3 | C | 3
4 | D | 4
с «Pagos» столом
dbo.pagos
id | id_empresa | monto | periodo
----------------------------------
1 | 1 | 120 | 2012-11-01
2 | 1 | 125 | 2012-12-01
3 | 2 | 150 | 2012-11-01
4 | 1 | 200 | 2013-01-01
5 | 2 | 151 | 2012-12-01
У меня есть значение X, который представляет собой процент.
Мне нужно, чтобы показать «EMPRESAS», что, сравнивая «МОНТОС» их двух последних «Pagos» (по заказу Periodo), изменились по крайней мере + X% или -Х% от especific id_delegacion
Например, если мы выполним этот запрос с этими примерами значений, учитывая
X = 10 id_delegacion = 3
выход ожидается будет:
name | periodo | monto
---------------------------
A | 2012-12-01 | 125
A | 2013-01-01 | 200
empresa A - from delegacion_id = 3, а сравнение между двумя последними pagos, упорядоченное по периоду desc (200 => 125), превышает 10%.
B не показан, потому что сравнение меньше 10%.
С не показали, потому что не имеет строки в таблице «Pagos»
D из другой делегации.
Как я могу получить этот желаемый результат? Для записи используется MySQL 5.5.8.
Что я сделал
Я получил это
select P.id_empresa, max(periodo) as periodo from
pagos P
where id_empresa in(
select e.id
from empresa E
where E.id_delegacion = 3
)
group by p.id_empresa, p.periodo
having count(*) > 1
с этим я получил "EMPRESAS", которые имеют более чем одну строку "Паго", и получил id_delegation = 3. Также получите первый период (максимум), но я не знаю, как получить второй для каждой empresa и сравнить их.
благодаря
выглядит хорошо, но мне нужно идти. Завтра я проверю это! спасибо –
ничего себе, это действительно хорошо. Это сработает, но теперь, когда вы говорите, альтернатива (показать в том же ряду) тоже может быть. Как будет в этом случае? –