[英]MySQL - SUM of ALIAS not working as expected
ORIGINAL TABLE原始表
TAG 1 | TAG 2 | TAG 3 | DATE OF REQUEST | RSP_CODE | ERROR | VALUE |
1 | A | 99 | 29/10/2019 | 00 | 2 | 10.25 |
2 | A | 99 | 28/10/2019 | 55 | 0 | 50.99 |
1 | A | 99 | 28/10/2019 | 99 | 0 | 100.00 |
3 | B | 99 | 27/10/2019 | 10 | 2 | 30.00 |
2 | C | 99 | 29/10/2019 | 00 | 0 | 45.00 |
EXPECTED TABLE预期表
ID | A | B | C | D | E | F | G | H |
29_10_2019_1_A_99 |NUMBER |NUMBER |NUMBER |NUMBER |NUMBER |NUMBER |NUMBER |CURRENCY |
29_10_2019_2_B_99 |NUMBER |NUMBER |NUMBER |NUMBER |NUMBER |NUMBER |NUMBER |CURRENCY |
29_10_2019_3_C_88 |NUMBER |NUMBER |NUMBER |NUMBER |NUMBER |NUMBER |NUMBER |CURRENCY |
Name of Column - Expected value列名-预期值
ID - CONCATENATION OF DAY_MONTH_YEAH_TAG1_TAG2_TAG3 ID - DAY_MONTH_YEAH_TAG1_TAG2_TAG3 的串联
A - COUNT OF RSP_CODE '00' AND THAT THE ERROR IS NOT 2 A - RSP_CODE '00' 的计数并且错误不是 2
B - COUNT OF RSP_CODE THAT ARE NOT '00' AND THAT THE ERROR IS NOT 2 B -不是“00”且错误不是 2的 RSP_CODE 计数
C - COUNT OF RSP_CODE THAT ARE '00' AND THAT ERROR IS 2 C - 为“00”且错误为 2 的 RSP_CODE 计数
D - COUNT OF RSP_CODE THAT ARE NOT '00' AND THAT THE ERROR IS 2 D -不是“00”且错误为 2 的 RSP_CODE 计数
E - SUM OF VALUES THAT ARE RSP_CODE = '00' AND THAT ERROR IS NOT 2 E - RSP_CODE = '00' 且错误不是 2的值的总和
F - SUM OF VALUES THAT ARE NOT RSP_CODE '00' THAT THE ERROR IS NOT 2 F -不是 RSP_CODE '00' 的值的总和,错误不是 2
G - SUM OF VALUES THAT ARE RSP_CODE = '00' AND THAT ERROR IS '2' G - RSP_CODE = '00' 且错误为 '2' 的值的总和
H - SUM OF VALUES THAT ARE NOT RSP_CODE '00' AND THAT THE ERROR IS '2' H -不是 RSP_CODE '00' 且错误为 '2' 的值的总和
You can't refer to aliases in the same SELECT
list.您不能在同一个
SELECT
列表中引用别名。 You need to put the query into a subquery.您需要将查询放入子查询中。
SELECT col0,
col1, col2, col3, col4, col5, col6, col7, col8,
col1+col2+col3+col4 AS total1,
col5+col6+col7+col8 AS total2
FROM (
SELECT CONCAT(extract(day from datetime_req),"_",extract(month from datetime_req),"_",
extract(year from datetime_req),"_",`card_acceptor_id_code`,"_",`terminal_id`,"_",`ext_nserie_simcard`,"_",`ext_connection_type`) AS 'col0',
COUNT(CASE WHEN `rsp_code_rsp` = '00' AND `tran_reversed` = '0' THEN 'APROVADA EFETIVADA' END) AS 'Col1',
COUNT(CASE WHEN `rsp_code_rsp` != '00' AND `tran_reversed` = '0' THEN 'NEGADA EFETIVADA' END) AS 'Col2',
COUNT(CASE WHEN `rsp_code_rsp` = '00' AND `tran_reversed` != '0' THEN 'APROVADA DESFEITA' END) AS 'Col3',
COUNT(CASE WHEN `rsp_code_rsp` != '00' AND `tran_reversed` != '0' THEN 'NEGADA DESFEITA' END) AS 'Col4',
SUM(CASE WHEN `rsp_code_rsp` = '00' AND `tran_reversed` = '0' THEN `tran_amount_req` ELSE 0 END)/100 AS 'col5',
SUM(CASE WHEN `rsp_code_rsp` != '00' AND `tran_reversed` = '0' THEN `tran_amount_req` ELSE 0 END)/100 AS 'col6',
SUM(CASE WHEN `rsp_code_rsp` = '00' AND `tran_reversed` != '0' THEN `tran_amount_req` ELSE 0 END)/100 AS 'Col7',
SUM(CASE WHEN `rsp_code_rsp` != '00' AND `tran_reversed` != '0' THEN `tran_amount_req` ELSE 0 END)/100 AS 'Col8'
FROM `table`
WHERE `datetime_req` BETWEEN '2019-10-29 00:00:00' AND '2019-10-29 23:59:59'
GROUP BY col0
) AS x
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.