MySQL-返回多个条目在一列中两行的最新日期和总和
对于每个ID_编号,都有一个账单日期,然后发生两种类型的账单。我想返回每个ID号的最新日期max date,然后将两种类型的账单金额相加。因此,根据下表,它应该返回:MySQL-返回多个条目在一列中两行的最新日期和总和,mysql,sql,Mysql,Sql,对于每个ID_编号,都有一个账单日期,然后发生两种类型的账单。我想返回每个ID号的最新日期max date,然后将两种类型的账单金额相加。因此,根据下表,它应该返回: | 1 | 201604 | 10.00 | | | 2 | 201701 | 28.00 | | tbl_charges +-----------+-----------+-----------+--------+ | ID_Numbe
| 1 | 201604 | 10.00 | |
| 2 | 201701 | 28.00 | |
tbl_charges
+-----------+-----------+-----------+--------+
| ID_Number | Bill_Date | Bill_Type | Amount |
+-----------+-----------+-----------+--------+
| 1 | 201601 | A | 5.00 |
| 1 | 201601 | B | 7.00 |
| 1 | 201604 | A | 4.00 |
| 1 | 201604 | B | 6.00 |
| 2 | 201701 | A | 15.00 |
| 2 | 201701 | B | 13.00 |
+-----------+-----------+-----------+--------+
然后,如果可能的话,我希望能够在另一个查询中的联接中执行此操作,使用ID_Number作为联接的列。这会改变这里的疑问吗
注意:我最初只想查询大约1000万个不同的ID_编号中的大约200个。我将为这些ID添加一个“IN”子句。当我为最终产品加入时,我需要知道如何从所有其他加入可能性中获得最新的日期。也就是说,我如何让ID_No.1加入201604而不是201601?我将使用“不存在”和“分组依据”
NOT EXISTS筛选出不相关的行并按总和分组。我倾向于在其中进行筛选: 或者,另一个有趣的方法是与元组一起使用:
select id_number, sum(c.amount)
from tbl_charges c
where (c.id_number, c.bill_type, c.date) in
(select c2.id_number, c2.bill_type, max(c2.date)
from tbl_charges c2
group by c2.id_number, c2.bill_type
)
group by id_number;
你是想在某处申报t2吗?我不应该申报t2.bill\u date>t1.bill\u date吗?你写的方式给了我最早的日期,而不是最晚的日期。
select id_number, sum(c.amount)
from tbl_charges c
where c.date = (select max(c2.date)
from tbl_charges c2
where c2.id_number = c.id_number and c2.bill_type = c.bill_type
)
group by id_number;
select id_number, sum(c.amount)
from tbl_charges c
where (c.id_number, c.bill_type, c.date) in
(select c2.id_number, c2.bill_type, max(c2.date)
from tbl_charges c2
group by c2.id_number, c2.bill_type
)
group by id_number;