繁体   English   中英

MySQL - 别名的总和未按预期工作

[英]MySQL - SUM of ALIAS not working as expected

原始表

   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  |

预期表

   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 |

列名-预期值

ID - DAY_MONTH_YEAH_TAG1_TAG2_TAG3 的串联

A - RSP_CODE '00' 的计数并且错误不是 2

B -不是“00”且错误不是 2的 RSP_CODE 计数

C - 为“00”且错误为 2 的 RSP_CODE 计数

D -不是“00”且错误为 2 的 RSP_CODE 计数

E - RSP_CODE = '00' 且错误不是 2的值的总和

F -不是 RSP_CODE '00' 的值的总和,错误不是 2

G - RSP_CODE = '00' 且错误为 '2' 的值的总和

H -不是 RSP_CODE '00' 且错误为 '2' 的值的总和

您不能在同一个SELECT列表中引用别名。 您需要将查询放入子查询中。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM