分公司 | 实时状态 | applyid | 操作人| 合同复核时间 | 合同编号
上面是我已经写好的查询,其中“合同编号”一列有重复值,我需要去重。
去重规则为当“合同编号”有重复值,并且“合同复核时间”都为同一天时,保留“合同复核时间”最大的一行。
当“合同编号”有重复值并且“合同复核时间”不为同一天时,保留每一天的最大值。比如说一个编号在 1 日出现了 2 次,在 2 日出现了 1 次,那么保留 1 日时间最大的一行和 2 日的那行。
因为权限原因我不能用临时表,不能用子查询,只能用连接查询。请问该怎样按条件去重呢?多谢各位 /(ㄒoㄒ)/~~
1
zakokun 2016-11-03 14:13:44 +08:00
搜索出来用其他语言处理,处理好了再塞回去
|
2
zachlhb 2016-11-03 14:30:21 +08:00 via Android
为什么同一天复核时不用更新而是用新增?
|
3
KagamineLenKai2 OP @zachlhb 更新的话就记录不到是否重复复核吧…表不是我建的┑( ̄Д  ̄)┍
|
4
Layne 2016-11-03 14:38:28 +08:00
你的权限允许把查询结果作为子表再进行连接查询吗?
先把你要查的这张表的数据按合同编号分组,合同复核时间取 MAX ,查询结果作为子表,合同编号和最大合同复合时间作为连接条件,再左连接这张表补充其他字段。 当然合同编号和合同复核时间两个字段要能确定一条记录。 |
5
KagamineLenKai2 OP @zakokun 然而我不是程序员,只是一个破做表的 /(ㄒoㄒ)/~~ 头像是 Len 吗?
|
6
KagamineLenKai2 OP @Layne 好,我试一下……
|
7
KagamineLenKai2 OP 在 CSDN 上受人指点惹,这里把 SQL 贴出来,希望能帮到一些人
作者:鏡音連改二 链接: https://www.zhihu.com/question/52243984/answer/129648873 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 SELECT apply.org_name AS 分公司, n.statusdes AS 实时状态, operation_log.apply_id, operation_log.operator_name AS 合同复核操作人, max( operation_log.operation_time ) AS 合同复核时间, contract.contract_number AS 合同编号, contract.actual_loan_time AS 实际放款时间, contract.loan_amount AS 合同金额 FROM operation_log LEFT JOIN contract ON contract.apply_id = operation_log.apply_id LEFT JOIN apply ON apply.apply_id = operation_log.apply_id LEFT JOIN ( SELECT group_concat( DISTINCT c.status_code SEPARATOR '||' ) AS statussum, c.is_in_node, c.apply_id, group_concat( DISTINCT c.status_name SEPARATOR '||' ) AS statusdes, group_concat( DISTINCT c.operator_name SEPARATOR '||' ) AS operatornames FROM node_record c WHERE c.is_in_node = 1 AND c.is_valid = 1 GROUP BY c.apply_id ) n ON apply.apply_id = n.apply_id WHERE operation_time >= "2016-11-1" AND before_status_name = "合同复核中" AND end_status_name = "合同复核完成" AND operation_log.node_code = "REVIEW" AND apply.is_ex_apply = '1' AND apply.borrowing_type = '1' AND operation_log.operator_name NOT LIKE "%测试%" GROUP BY apply.org_name, n.statusdes, operation_log.apply_id, operation_log.operator_name, DATE( operation_log.operation_time ), contract.contract_number, contract.actual_loan_time, contract.loan_amount |