如何 select 分月和年?
How to select min month and year?
我有一个 table 这样的:
cuota_abono(**cod_abono**, **mes**, **anio**, valor, pago_acumulado, estado)
where:
-cod_abono: VARCHAR (PK)
-mes: INT (month -- values from 1 to 12) (PK)
-anio: INT (year) (PK)
-valor: DECIMAL(10,2)
-pago_acumulado: DECIMAL(10,2)
-estado(TINYINT -- 0 or 1)
问题是我需要 select 最旧的未付款 cuota_abono(其中 estado=0)。
例如:
cod_abono mes anio valor pago_acumulado estado
Z000 9 2015 315.00 100.00 0
Z000 5 2016 315.00 315.00 1
Z000 6 2016 315.00 200.00 0
Z000 7 2016 315.00 0.00 0
Z001 5 2016 315.00 0.00 0
Z001 6 2016 315.00 315.00 1
鉴于我正在寻找最旧的 cuota_abono,我希望获得:
(Z000, 9, 2015, 315.00, 100.00, 0) --> 1° row
我试过这个查询:
select cod_abono, min(mes), min(anio), valor, pago_acumulado, estado
from cuota_abono
where cod_abono="Z000" and cuota_paga=0
但是,我得到:
(Z000, *6*, 2015, 315.00, 100.00, 0)
我实际上得到了 cod_abono="Z000" 和 estado=0 的最小月份,从数字上讲,但这不正确。
有什么建议吗?
使用order by
和limit
:
select ca.*
from cuota_abono ca
where cod_abono = 'Z000' and cuota_paga = 0
order by anio, mes
limit 1;
我有一个 table 这样的:
cuota_abono(**cod_abono**, **mes**, **anio**, valor, pago_acumulado, estado)
where:
-cod_abono: VARCHAR (PK)
-mes: INT (month -- values from 1 to 12) (PK)
-anio: INT (year) (PK)
-valor: DECIMAL(10,2)
-pago_acumulado: DECIMAL(10,2)
-estado(TINYINT -- 0 or 1)
问题是我需要 select 最旧的未付款 cuota_abono(其中 estado=0)。
例如:
cod_abono mes anio valor pago_acumulado estado
Z000 9 2015 315.00 100.00 0
Z000 5 2016 315.00 315.00 1
Z000 6 2016 315.00 200.00 0
Z000 7 2016 315.00 0.00 0
Z001 5 2016 315.00 0.00 0
Z001 6 2016 315.00 315.00 1
鉴于我正在寻找最旧的 cuota_abono,我希望获得:
(Z000, 9, 2015, 315.00, 100.00, 0) --> 1° row
我试过这个查询:
select cod_abono, min(mes), min(anio), valor, pago_acumulado, estado
from cuota_abono
where cod_abono="Z000" and cuota_paga=0
但是,我得到:
(Z000, *6*, 2015, 315.00, 100.00, 0)
我实际上得到了 cod_abono="Z000" 和 estado=0 的最小月份,从数字上讲,但这不正确。
有什么建议吗?
使用order by
和limit
:
select ca.*
from cuota_abono ca
where cod_abono = 'Z000' and cuota_paga = 0
order by anio, mes
limit 1;