SELECT fs.id AS fundId, temp.id AS ticketId FROM t_fund_settlement fs, (SELECT order_no, id, SUM(receivables) AS `receivables` FROM t_ticket WHERE order_type = 'issue_ticket' and fund_verification_status <![CDATA[ <> ]]> 1 GROUP BY id, order_no) temp where fs.order_type = 'issue_ticket' AND fs.order_no = temp.order_no AND fs.amount = temp.receivables and fs.verification_status <![CDATA[ <> ]]> 1 and fs.platform <![CDATA[ <> ]]> 'XC' UNION SELECT fs.id AS fundId, t.id AS ticketId FROM t_fund_settlement fs, t_ticket t where fs.order_type = 'issue_ticket' AND fs.amount = t.receivables and t.ticket_no_operate = fs.ticket_no and fs.verification_status <![CDATA[ <> ]]> 1 and t.fund_verification_status <![CDATA[ <> ]]> 1 and fs.platform = 'XC' LIMIT #{page} , 1000
时间: 2024-02-14 09:31:51 浏览: 82
这段代码是一个复杂的查询语句,用于从数据库中获取基金和票据的相关信息。它包含两个查询的结果,并使用UNION操作符将它们合并在一起。
第一个查询是一个子查询,从表t_ticket中检索出订单类型为'issue_ticket',并且基金验证状态不等于1的记录。然后,根据订单号和ID进行分组,并计算receivables字段的总和。这个子查询的结果被命名为temp。
第一个查询中的主查询部分通过连接t_fund_settlement和temp表来检索基金与票据的信息。它使用了多个条件来匹配订单类型、订单号、金额和验证状态。
第二个查询是直接从t_fund_settlement和t_ticket表中检索基金与票据的信息。它使用了类似的条件来匹配订单类型、金额、操作票号以及验证状态。
最后,使用LIMIT子句来限制结果集的数量,从第#{page}行开始获取1000行记录。
这段代码的目的是从数据库中获取符合条件的基金和票据信息,并进行合并和限制结果集的操作。
相关问题
SELECT sum(t.pay_amount)+sum(t.promotion_amount)+SUM(t.author_coupon_subsidy)+SUM(t.actual_zt_pay_promotion)+SUM(t.actual_zr_pay_promotion)+SUM(t.refund_amount)+SUM(t.jylp_wp_amount)+SUM(t.post_amount)+SUM(t.promotion_amount_yf) as 'b_amount',\n" + "SUM(t.platform_service_fee)+SUM(t.commission)+SUM(t.channel_fee)+SUM(t.colonel_service_fee)+SUM(t.channel_promotion_fee)+SUM(t.other_sharing_amount)+SUM(t.yfx_amount)+SUM(t.jylp_yp_amount) as 's_amount'\n" + "from dy_settlement_push_input t where t.deleted = '0'
这是一条 SQL 查询语句,目的是查询 dy_settlement_push_input 表中满足条件(deleted = '0')的记录中,各种金额字段的总和。具体来说,该语句计算了以下金额:
1. pay_amount:支付金额
2. promotion_amount:促销优惠金额
3. author_coupon_subsidy:优惠券补贴金额
4. actual_zt_pay_promotion:直通车支付优惠金额
5. actual_zr_pay_promotion:直冲支付优惠金额
6. refund_amount:退款金额
7. jylp_wp_amount:加油礼品卡支付金额
8. post_amount:邮费金额
9. promotion_amount_yf:促销优惠金额(应付)
10. platform_service_fee:平台服务费
11. commission:佣金
12. channel_fee:渠道费用
13. colonel_service_fee:团长服务费
14. channel_promotion_fee:渠道促销费用
15. other_sharing_amount:其他分摊金额
16. yfx_amount:邮费险金额
17. jylp_yp_amount:加油礼品卡优惠金额
最终会返回两个金额总和,分别是 b_amount 和 s_amount。
query1 := a.Ts.Table("business_settlement_profit as a"). Select(`ifnull(sum(CASE WHEN b.asid=a.link_id and a.user_type=? then b.sum_order_amt else 0 end),0) as sum_pay_amt, ifnull(sum(CASE WHEN b.asid=a.link_id and a.user_type=? then 1 else 0 end),0) as order_sum, ifnull(sum(CASE WHEN a.stmt_status=1 THEN a.profit ELSE 0 END), 0.00) as sum_profit, ifnull(sum(CASE WHEN a.stmt_status=0 and b.asid=a.link_id and a.user_type=? THEN a.pay_amt+b.sum_order_amt ELSE 0 END), 0.00) as ret_pay_amt`, model.USER_TYPE_SUPPLIER_AGENT, model.USER_TYPE_SUPPLIER_AGENT, model.USER_TYPE_SUPPLIER_AGENT). Joins("inner join business_settlement as b on a.bsid=b.bsid"). Where("a.link_id=? and a.user_type=?", a.Token.LinkId, a.Token.UserType)
这段代码是一个查询语句,使用了GORM库的链式调用方法。它从名为`business_settlement_profit`的表中选择了一些字段,并根据特定条件进行了一些计算。以下是对代码的解释:
```go
query1 := a.Ts.Table("business_settlement_profit as a").
Select(`ifnull(sum(CASE WHEN b.asid=a.link_id and a.user_type=? then b.sum_order_amt else 0 end),0) as sum_pay_amt,
ifnull(sum(CASE WHEN b.asid=a.link_id and a.user_type=? then 1 else 0 end),0) as order_sum,
ifnull(sum(CASE WHEN a.stmt_status=1 THEN a.profit ELSE 0 END), 0.00) as sum_profit,
ifnull(sum(CASE WHEN a.stmt_status=0 and b.asid=a.link_id and a.user_type=? THEN a.pay_amt+b.sum_order_amt ELSE 0 END), 0.00) as ret_pay_amt`,
model.USER_TYPE_SUPPLIER_AGENT, model.USER_TYPE_SUPPLIER_AGENT, model.USER_TYPE_SUPPLIER_AGENT).
Joins("inner join business_settlement as b on a.bsid=b.bsid").
Where("a.link_id=? and a.user_type=?", a.Token.LinkId, a.Token.UserType)
```
在这段代码中,`query1`是一个GORM库的查询构造器对象。它使用了链式调用的方式来构建一个复杂的查询语句。下面是对每一部分的解释:
1. `a.Ts.Table("business_settlement_profit as a")`:从名为`business_settlement_profit`的表中选择数据,并将其别名为`a`。
2. `Select(...)`:选择了一些字段,并使用`SUM`和`CASE WHEN`等表达式进行计算。这些计算结果将被赋予别名,如`sum_pay_amt`、`order_sum`等。
3. `Joins("inner join business_settlement as b on a.bsid=b.bsid")`:使用内连接将`business_settlement_profit`表与`business_settlement`表进行关联,关联条件是它们的`bsid`字段相等。
4. `Where("a.link_id=? and a.user_type=?", a.Token.LinkId, a.Token.UserType)`:设置查询的条件,即`link_id`等于`a.Token.LinkId`并且`user_type`等于`a.Token.UserType`。
根据你的需求,你可以根据这个示例进行修改和扩展来构建你自己的查询语句。
阅读全文