mysql casewhen结果集_Mysql case when 和 多表 union all 多表不同字段到同一结果集...

这篇博客介绍了如何使用MySQL的CASE WHEN语句结合多表UNION ALL操作,将不同表中不同字段合并到同一个结果集中,特别是在处理货币类型转换和汇总统计时的应用。内容涉及到根据currencyType字段设置货币类型别名,并通过UNION ALL合并来自w_bet、w_cash和w_draw表的数据。
摘要由CSDN通过智能技术生成

currencyId AS currencyId,

SELECT

userName AS userName,

agentName AS agentName,

(case

when currencyType=1 then 'CNY'

when currencyType=2 then 'THB'

when currencyType=3 then 'KRW'

when currencyType=4 then 'IDR'

else 'CNY' end ) AS currencyType,

SUM(settleAccount)*-1 AS settleAccount,

SUM(IF(bettingAmount>0,1,0)) AS orderNumber,

SUM(bettingAmount) AS bettingAmount,

SUM(winAmount) AS winAmount,

SUM(lossAmount) AS lossAmount,

SUM(winLossAmount) AS winLossAmount,

SUM(effectiveAmount) AS effectiveAmount,

SUM(specialBonus) AS specialBonus,

SUM(deposit) AS deposit,

SUM(withdrawals) AS withdrawals,

SUM(additionAmount) AS additionAmount

FROM (

SELECT

u_id AS userName,

agent_id AS agentName,

currency_id AS currencyType,

win_user AS settleAccount,

bet_money AS bettingAmount,

IF(win_user>0,win_user,0) AS winAmount,

IF(win_user<0,win_user,0) AS lossAmount,

win_user AS winLossAmount,

IF((return_user!=0 OR return_spartner!=0) AND

win_user!=0,SOLID_MONEY,0) AS effectiveAmount,

0 AS specialBonus,

0 AS deposit,

0 AS withdrawals,

0 AS additionAmount

FROM w_bet FORCE INDEX(start_time)

WHERE win_user!=0

AND start_time>='2014-11-02 00:00:00'

AND start_time<='2014-11-03 23:59:59'

AND agent_id IN ('dta0002','d206025')

UNION ALL

SELECT

to_uid AS userName,

agent_id AS agentName,

'0' AS currencyType,

0 AS settleAccount,

0 AS bettingAmount,

0 AS winAmount,

0 AS lossAmount,

0 AS winLossAmount,

0 AS effectiveAmount,

IF(cost_remark='PAY_ADD' OR

cost_remark='ACTIVITY_ADD',cost_amount,0) AS specialBonus,

IF(cost_remark='deposit' OR

cost_remark='turnin',cost_amount,0) AS deposit,

0 AS withdrawals,

0 AS additionAmount

FROM w_cash c,w_user u

WHERE u_id = to_uid

AND u.agent_id IN

('dta0002','d206025')

AND cost_time>='2014-11-02

00:00:00'

AND cost_time<='2014-11-03

23:59:59'

UNION ALL

SELECT

d.u_id AS userName,

agent_id AS agentName,

'0' AS currencyType,

0 AS settleAccount,

0 AS bettingAmount,

0 AS winAmount,

0 AS lossAmount,

0 AS winLossAmount,

0 AS effectiveAmount,

0 AS specialBonus,

0 AS deposit,

IF(admin_words='取消優惠' OR

admin_words='CANCEL_ACTIVITY_ADD',draw_remark,draw_money) AS

withdrawals,

0 AS additionAmount

FROM w_draw d,w_user u

WHERE d.u_id = u.u_id

AND  u.agent_id IN

('dta0002','d206025')

AND draw_change_time>='2014-11-02 00:00:00'

AND draw_change_time<='2014-11-03 23:59:59'

) b

GROUP BY userName

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值