Select('a.bid, a.bname, a.acct_bal, a.buy_Sum_Amt, a.stmt_amt, a.admin_uid, a.user_name, a.status'). Joins("left join business_bal as s on s.bid=a.bid"). Joins("left join user_base as u on u.uid=a.admin_uid"). Joins("left join business_settlement as b on b.uid=a.bid")待结算需要查询stmt_status字段为1的stmt_amt字段的和
时间: 2024-04-15 14:31:05 浏览: 64
若要查询待结算商家的结算金额总和(stmt_amt字段),需要在原有的查询语句基础上加上stmt_status字段等于1的筛选条件,并使用sum函数对stmt_amt字段进行求和。修改后的代码如下:
```python
Select('a.bid, a.bname, a.acct_bal, a.buy_Sum_Amt, sum(a.stmt_amt) as total_stmt_amt, a.admin_uid, a.user_name, a.status').
Joins("left join business_bal as s on s.bid=a.bid").
Joins("left join user_base as u on u.uid=a.admin_uid").
Joins("left join business_settlement as b on b.uid=a.bid").
Where("b.stmt_status = ?", 1)
```
在原有代码的基础上,使用Where条件筛选出stmt_status字段等于1的记录,并使用sum函数对stmt_amt字段进行求和,将结果命名为total_stmt_amt。这样可以获取待结算商家的结算金额总和。
相关问题
func AppOperateRecharge(a *decorator.ApiBase) error { logger.AccessLogger.Info("AppOperateRecharge...") resp := adminStruct.BusinessOrderRecharge{} a.Ts.Table("business_base as a"). Select("s.bid, a.bname, s.acct_bal,s.buy_sum_amt, sum(CASE WHEN b.stmt_status = 1 THEN a.stmt_amt ELSE 0 END) as unpaid_amt, sum(CASE WHEN b.stmt_status = 0 THEN a.stmt_amt ELSE 0 END) as stmt_amt, a.admin_uid, u.user_name, a.status"). Joins("left join business_bal as s on s.bid=a.bid"). Joins("left join user_base as u on u.uid=a.admin_uid"). Joins("left join business_settlement as b on b.bid=a.bid"). Where("a.bid=?", a.Token.LinkId). Group("a.bid"). Scan(resp) return a.ReturnSuccessCustomResponse(resp) } type Statustype BusinessOrderRecharge struct { Bid int64 json:"bid" // 商家ID Bname string json:"bname" // 商家名称 Acct_Bal int64 json:"acct_bal" //账面余额 Buy_sum_amt int64 json:"buy_sum_amt" //采购货款 Unpaid_amt int64 json:"unpaid_amt" //待结算货款 Stmt_amt int64 json:"stmt_amt" //已结算金额 Admin_uid int64 json:"admin_Uid" //管理员 Admin_name string json:"admin_name" //管理员姓名 Status string json:"status" //商家状态 }查看表商家状态字段Status1为返回入驻成功2为待审核并传入结构体Status中
这段代码是一个名为AppOperateRecharge的函数,它接受一个名为a的指向decorator.ApiBase类型的指针作为参数,并返回一个错误。函数内部首先打印日志信息"AppOperateRecharge...",然后定义一个名为resp的adminStruct.BusinessOrderRecharge类型的变量。接下来,它使用a.Ts.Table方法选择表"business_base"并将查询结果存储到resp变量中。查询语句使用了多个左连接(left join)来连接多个表,并通过Where子句指定了条件"a.bid=?",其中a.Token.LinkId表示查询条件的值。最后,通过Group方法对结果进行分组,并使用Scan方法将结果存储到resp变量中。
函数最后使用a.ReturnSuccessCustomResponse方法将resp作为参数返回。
在这段代码中,adminStruct.BusinessOrderRecharge结构体定义了多个字段,包括Bid、Bname、Acct_Bal等,用于存储查询结果的不同列的值。其中Status字段表示商家状态。根据你提供的信息,商家状态字段的值1表示返回入驻成功,值2表示待审核。这些状态值会被传入到BusinessOrderRecharge结构体的Status字段中。
Select(`s.bid, a.bname, s.acct_bal, s.buy_sum_amt, ifnull(sum(CASE WHEN b.stmt_status = 1 THEN b.stmt_amt ELSE 0 END), 0) as unpaid_amt, ifnull(sum(CASE WHEN i.epay_status=0 and i.contract_no='' and i.link_id=a.bid THEN i.order_amt ELSE 0 END ),0)as pur_no_sett, ifnull(sum(CASE WHEN b.stmt_status = 0 THEN b.stmt_amt ELSE 0 END), 0 )as stmt_amt, a.admin_uid, u.user_name, a.status`). Joins("left join source_pay_info as i on i.link_id=a.bid"). Joins("left join business_bal as s on s.bid=a.bid"). Joins("left join user_base as u on u.uid=a.admin_uid"). Joins("left join business_settlement as b on b.bid=a.bid"). Group("a.bid")
这段代码是一个查询语句,用于从多个表中选择特定的列,并进行连接和聚合操作。以下是查询语句的解释:
- 选择了以下列:`s.bid, a.bname, s.acct_bal, s.buy_sum_amt, a.admin_uid, u.user_name, a.status`。
- 使用`ifnull`函数对一些列进行条件判断和处理。
- 使用`sum`函数对一些列进行求和操作。
- 使用`CASE WHEN`语句对条件进行判断,根据条件返回不同的值。
- 使用`LEFT JOIN`将表进行连接,连接条件分别是`i.link_id=a.bid`、`s.bid=a.bid`、`u.uid=a.admin_uid`和`b.bid=a.bid`。
- 使用`GROUP BY`对结果进行分组,分组依据是`a.bid`列。
这个查询语句的目的是从多个表中获取特定的列,并根据一些条件进行数据处理和聚合。通过连接操作将相关的表关联起来,并使用`GROUP BY`对结果进行分组。最终返回的结果将包含所选列的值,并且根据条件进行了相应的处理和计算。
阅读全文