800行sql大boss需求

142 阅读11分钟

1、需求描述:

这次需求对系统消费数据进行一次数据统计,做出一张报表要求通过时间查询出以往的数据,已经进行一个简单合计和统计,分为明细表和汇总表



2、需求分析、解决方案:

1)、根据甲方提供的数据计算公式把数据进行一个计算,知道初始数据从何来
2)、通过mysql中的子查询、left join、union all、别名等,直接查询出所需要的数据
3)、一开始想用业务代码实现合计和统计,后来同事提醒既然要sql都是要执行的,何不在sql中就把要计算的值都计算出来,所以一般能用sql解决的事就不用代码来了

3、直接上‘硬菜’‘sql’

报表明细表sql
( SELECT
   record.CREATETIME,
   tf_memberinfo.MI_NAME,
   tf_memberinfo.MI_PHONE,
   tf_memberinfo.MI_NO,
   '--' AS 'OPERATE_MACHINE_NO',
   record.MONEY,
   record.AFTER_MONEY,
   record.CASH_MONEY,
   record.SUBSIDY_MONEY,
   record.REMARK,
   record.TYPE,
   tf_userinfo.UNAME AS 'CASHIER'
   FROM
      tf_memberinfo
      INNER JOIN (
      SELECT
         CASH_MONEY AS 'MONEY',
         CASH_ORIGINALAMOUNT AS 'AFTER_MONEY',
         CASH_MONEY,
         SUBSIDY_MONEY,
         RECHARGE_ID AS 'ORDERID',
         MI_ID,
         CREATETIME,
         '现金交费' AS 'REMARK',
         '加款' AS 'TYPE',
         CLIENT_CODE,
         STORE_CODE,
         U_ID
      FROM
         tf_member_recharge_record
      WHERE
         RECHARGE_TYPE IN ( '0', '4' )
         AND REFUND_STATUS = '0'
         AND CREATETIME BETWEEN '2022-05-18 00:00:00'
         AND '2022-05-22 23:59:59'
         AND CLIENT_CODE = '164939526950419'
         AND STORE_CODE = '0000' UNION ALL
      SELECT
         CARD_COST AS 'MONEY',
         '0.00' AS 'AFTER_MONEY',
         '0.00' AS 'CASH_MONEY',
         '0.00' AS 'SUBSIDY_MONEY',
         ORDER_ID AS 'ORDERID',
         MI_ID,
         CREATETIME,
         '退还押金' AS 'REMARK',
         '减款' AS 'TYPE',
         CLIENT_CODE,
         STORE_CODE,
         U_ID
      FROM
         tf_card_cost_record
      WHERE
         PAY_STATUS = '1'
         AND REFUND_STATUS = '1'
         AND CREATETIME BETWEEN '2022-05-18 00:00:00'
         AND '2022-05-22 23:59:59'
         AND CLIENT_CODE = '164939526950419'
         AND STORE_CODE = '0000' UNION ALL
      SELECT
         OPEN_MONEY AS 'MONEY',
         '0.00' AS 'AFTER_MONEY',
         '0.00' AS 'CASH_MONEY',
         '0.00' AS 'SUBSIDY_MONEY',
         '--' AS 'ORDERID',
         MI_ID,
         CREATETIME,
         '开户押金' AS 'REMARK',
         '加款' AS 'TYPE',
         CLIENT_CODE,
         STORE_CODE,
         U_ID
      FROM
         tf_open_account_money_record
      WHERE
         CREATETIME BETWEEN '2022-05-18 00:00:00'
         AND '2022-05-22 23:59:59'
         AND CLIENT_CODE = '164939526950419'
         AND STORE_CODE = '0000' UNION ALL
      SELECT
         CARD_COST AS 'MONEY',
         '0.00' AS 'AFTER_MONEY',
         '0.00' AS 'CASH_MONEY',
         '0.00' AS 'SUBSIDY_MONEY',
         ORDER_ID AS 'ORDERID',
         MI_ID,
         CREATETIME,
         '换卡押金' AS 'REMARK',
         '加款' AS 'TYPE',
         CLIENT_CODE,
         STORE_CODE,
         U_ID
      FROM
         tf_card_cost_record
      WHERE
         PAY_STATUS = '1'
         AND REFUND_STATUS = '0'
         AND CREATETIME BETWEEN '2022-05-18 00:00:00'
         AND '2022-05-22 23:59:59'
         AND CLIENT_CODE = '164939526950419'
         AND STORE_CODE = '0000' UNION ALL
      SELECT
         SUBSIDY_MONEY AS 'MONEY',
         SUBSIDY_ORIGINALAMOUNT AS 'AFTER_MONEY',
         CASH_MONEY,
         SUBSIDY_MONEY,
         LESS_ID AS 'ORDERID',
         MI_ID,
         CREATETIME,
         '补贴退还' AS 'REMARK',
         '减款' AS 'TYPE',
         CLIENT_CODE,
         STORE_CODE,
         U_ID
      FROM
         tf_member_less_record
      WHERE
         LESS_TYPE = '1'
         AND CREATETIME BETWEEN '2022-05-18 00:00:00'
         AND '2022-05-22 23:59:59'
         AND CLIENT_CODE = '164939526950419'
         AND STORE_CODE = '0000' UNION ALL
      SELECT
         CASH_MONEY AS 'MONEY',
         CASH_ORIGINALAMOUNT AS 'AFTER_MONEY',
         CASH_MONEY,
         SUBSIDY_MONEY,
         LESS_ID AS 'ORDERID',
         MI_ID,
         CREATETIME,
         '现金退还' AS 'REMARK',
         '减款' AS 'TYPE',
         CLIENT_CODE,
         STORE_CODE,
         U_ID
      FROM
         tf_member_less_record
      WHERE
         LESS_TYPE = '1'
         AND CREATETIME BETWEEN '2022-05-18 00:00:00'
         AND '2022-05-22 23:59:59'
         AND CLIENT_CODE = '164939526950419'
         AND STORE_CODE = '0000' UNION ALL
      SELECT
         EXTRACT_MONEY AS 'MONEY',
         EXTRACT_AFTER_MONEY AS 'AFTER_MONEY',
         CASH_EXTRACT_MONEY AS 'CASH_MONEY',
         SUBSIDY_EXTRACT_MONEY AS 'SUBSIDY_MONEY',
         SEQNO AS 'ORDERID',
         MI_ID,
         CREATETIME,
         '现金提取' AS 'REMARK',
         '减款' AS 'TYPE',
         CLIENT_CODE,
         STORE_CODE,
         U_ID
      FROM #
         tf_cash_extract_record
      WHERE
         CREATETIME BETWEEN '2022-05-18 00:00:00'
         AND '2022-05-22 23:59:59'
         AND CLIENT_CODE = '164939526950419'
         AND STORE_CODE = '0000'
      ) record ON record.MI_ID = tf_memberinfo.MI_ID
      LEFT JOIN tf_userinfo ON record.U_ID = tf_userinfo.U_ID
   WHERE
      1 = 1
      AND record.MONEY > 0
   ORDER BY
      record.CREATETIME ASC
   ) UNION ALL
   (
   SELECT
      '总计' AS 'CREATETIME',
      '总计' AS 'MI_NAME',
      '--' AS 'MI_PHONE',
      '--' AS 'MI_NO',
      '--' AS 'OPERATE_MACHINE_NO',
      total.MONEY,
      total.AFTER_MONEY,
      total.CASH_MONEY,
      total.SUBSIDY_MONEY,
      '汇总' AS 'REMARK',
      '汇总' AS 'TYPE',
      '--' AS 'CASHIER'
   FROM
      (
      SELECT
         record.CREATETIME,
         '总计' AS 'MI_NAME',
         '--' AS 'MI_PHONE',
         '--' AS 'MI_NO',
         '--' AS 'OPERATE_MACHINE_NO',
         sum( record.MONEY ) AS 'MONEY',
         sum( record.AFTER_MONEY ) AS 'AFTER_MONEY',
         sum( record.CASH_MONEY ) AS 'CASH_MONEY',
         sum( record.SUBSIDY_MONEY ) AS 'SUBSIDY_MONEY',
         '汇总' AS 'REMARK',
         '汇总' AS 'TYPE',
         '--' AS 'CASHIER'
      FROM
         tf_memberinfo
         INNER JOIN (
         SELECT
            CASH_MONEY AS 'MONEY',
            CASH_ORIGINALAMOUNT AS 'AFTER_MONEY',
            CASH_MONEY,
            SUBSIDY_MONEY,
            RECHARGE_ID AS 'ORDERID',
            MI_ID,
            CREATETIME,
            '现金交费' AS 'REMARK',
            '加款' AS 'TYPE',
            CLIENT_CODE,
            STORE_CODE,
            U_ID
         FROM
            tf_member_recharge_record
         WHERE
            RECHARGE_TYPE IN ( '0', '4' )
            AND REFUND_STATUS = '0'
            AND CREATETIME BETWEEN '2022-05-18 00:00:00'
            AND '2022-05-22 23:59:59'
            AND CLIENT_CODE = '164939526950419'
            AND STORE_CODE = '0000' UNION ALL
         SELECT
            CARD_COST AS 'MONEY',
            '0.00' AS 'AFTER_MONEY',
            '0.00' AS 'CASH_MONEY',
            '0.00' AS 'SUBSIDY_MONEY',
            ORDER_ID AS 'ORDERID',
            MI_ID,
            CREATETIME,
            '退还押金' AS 'REMARK',
            '减款' AS 'TYPE',
            CLIENT_CODE,
            STORE_CODE,
            U_ID
         FROM
            tf_card_cost_record
         WHERE
            PAY_STATUS = '1'
            AND REFUND_STATUS = '1'
            AND CREATETIME BETWEEN '2022-05-18 00:00:00'
            AND '2022-05-22 23:59:59'
            AND CLIENT_CODE = '164939526950419'
            AND STORE_CODE = '0000' UNION ALL
         SELECT
            OPEN_MONEY AS 'MONEY',
            '0.00' AS 'AFTER_MONEY',
            '0.00' AS 'CASH_MONEY',
            '0.00' AS 'SUBSIDY_MONEY',
            '--' AS 'ORDERID',
            MI_ID,
            CREATETIME,
            '开户押金' AS 'REMARK',
            '加款' AS 'TYPE',
            CLIENT_CODE,
            STORE_CODE,
            U_ID
         FROM
            tf_open_account_money_record
         WHERE
            CREATETIME BETWEEN '2022-05-18 00:00:00'
            AND '2022-05-22 23:59:59'
            AND CLIENT_CODE = '164939526950419'
            AND STORE_CODE = '0000' UNION ALL
         SELECT
            CARD_COST AS 'MONEY',
            '0.00' AS 'AFTER_MONEY',
            '0.00' AS 'CASH_MONEY',
            '0.00' AS 'SUBSIDY_MONEY',
            ORDER_ID AS 'ORDERID',
            MI_ID,
            CREATETIME,
            '换卡押金' AS 'REMARK',
            '加款' AS 'TYPE',
            CLIENT_CODE,
            STORE_CODE,
            U_ID
         FROM
            tf_card_cost_record
         WHERE
            PAY_STATUS = '1'
            AND REFUND_STATUS = '0'
            AND CREATETIME BETWEEN '2022-05-18 00:00:00'
            AND '2022-05-22 23:59:59'
            AND CLIENT_CODE = '164939526950419'
            AND STORE_CODE = '0000' UNION ALL
         SELECT
            SUBSIDY_MONEY AS 'MONEY',
            SUBSIDY_ORIGINALAMOUNT AS 'AFTER_MONEY',
            CASH_MONEY,
            SUBSIDY_MONEY,
            LESS_ID AS 'ORDERID',
            MI_ID,
            CREATETIME,
            '补贴退还' AS 'REMARK',
            '减款' AS 'TYPE',
            CLIENT_CODE,
            STORE_CODE,
            U_ID
         FROM
            tf_member_less_record
         WHERE
            LESS_TYPE = '1'
            AND CREATETIME BETWEEN '2022-05-18 00:00:00'
            AND '2022-05-22 23:59:59'
            AND CLIENT_CODE = '164939526950419'
            AND STORE_CODE = '0000' UNION ALL
         SELECT
            CASH_MONEY AS 'MONEY',
            CASH_ORIGINALAMOUNT AS 'AFTER_MONEY',
            CASH_MONEY,
            SUBSIDY_MONEY,
            LESS_ID AS 'ORDERID',
            MI_ID,
            CREATETIME,
            '现金退还' AS 'REMARK',
            '减款' AS 'TYPE',
            CLIENT_CODE,
            STORE_CODE,
            U_ID
         FROM
            tf_member_less_record
         WHERE
            LESS_TYPE = '1'
            AND CREATETIME BETWEEN '2022-05-18 00:00:00'
            AND '2022-05-22 23:59:59'
            AND CLIENT_CODE = '164939526950419'
            AND STORE_CODE = '0000' UNION ALL
         SELECT
            EXTRACT_MONEY AS 'MONEY',
            EXTRACT_AFTER_MONEY AS 'AFTER_MONEY',
            CASH_EXTRACT_MONEY AS 'CASH_MONEY',
            SUBSIDY_EXTRACT_MONEY AS 'SUBSIDY_MONEY',
            SEQNO AS 'ORDERID',
            MI_ID,
            CREATETIME,
            '现金提取' AS 'REMARK',
            '减款' AS 'TYPE',
            CLIENT_CODE,
            STORE_CODE,
            U_ID
         FROM
            tf_cash_extract_record
         WHERE
            CREATETIME BETWEEN '2022-05-18 00:00:00'
            AND '2022-05-22 23:59:59'
            AND CLIENT_CODE = '164939526950419'
            AND STORE_CODE = '0000'
         ) record ON record.MI_ID = tf_memberinfo.MI_ID
         LEFT JOIN tf_userinfo ON record.U_ID = tf_userinfo.U_ID
      WHERE
         1 = 1
         AND record.MONEY > 0
      ) total
   )
   LIMIT 0,
   10

查询结果如下

屏幕截图 2022-10-14 140838.png

报表汇总表sql

SELECT
   total.DATE,
   total.CASH_RECHARGE_MONEY,
   total.SUBSIDY_RECHARGE_MONEY,
   total.accountMoney,
   total.CARD_COST,
   ( total.CASH_RECHARGE_MONEY + total.SUBSIDY_RECHARGE_MONEY + total.accountMoney + total.CARD_COST ) AS 'TOL_CASH',
   total.RefundToError,
   total.REFUND_CARD_COST,
   total.EXTRACT_MONEY,
   total.refundBalance,
   ( total.RefundToError + total.REFUND_CARD_COST + total.EXTRACT_MONEY + total.refundBalance ) AS 'TOL_SUBSIDY',
   (
      ( total.CASH_RECHARGE_MONEY + SUBSIDY_RECHARGE_MONEY + total.accountMoney + total.CARD_COST ) - ( total.RefundToError + total.REFUND_CARD_COST + total.EXTRACT_MONEY + total.refundBalance + total.TOL_CCR_MONEY )
   ) AS 'TOTAL_INCREASE',
   total.TOL_CCR_MONEY,
   (
      (
         ( total.CASH_RECHARGE_MONEY + SUBSIDY_RECHARGE_MONEY + total.accountMoney + total.CARD_COST ) - ( total.RefundToError + total.REFUND_CARD_COST + total.EXTRACT_MONEY + total.refundBalance + total.TOL_CCR_MONEY )
      ) - total.TOL_CCR_MONEY
   ) AS 'REMAINING_AMOUNT',
   ( total.CASH_RECHARGE_MONEY + total.accountMoney + total.CARD_COST ) AS 'CASH_PAY'
FROM
   (
   SELECT
      hospital_date_record.DATE,
      ( CASE WHEN tf_member_recharge_record.CASH_MONEY IS NULL THEN 0.00 ELSE tf_member_recharge_record.CASH_MONEY END ) AS 'CASH_RECHARGE_MONEY',
      ( CASE WHEN tf_member_recharge_record.SUBSIDY_MONEY IS NULL THEN 0.00 ELSE tf_member_recharge_record.SUBSIDY_MONEY END ) AS 'SUBSIDY_RECHARGE_MONEY',
      ( CASE WHEN tf_member_less_record.RefundToError IS NULL THEN 0.00 ELSE tf_member_less_record.RefundToError END ) AS 'RefundToError',
      ( CASE WHEN tf_open_account_money_record.accountMoney IS NULL THEN 0.00 ELSE tf_open_account_money_record.accountMoney END ) AS 'accountMoney',
      ( CASE WHEN tf_card_cost_record.CARD_COST IS NULL THEN 0.00 ELSE tf_card_cost_record.CARD_COST END ) AS 'CARD_COST',
      '0' AS 'payMachine',
      ( CASE WHEN tf_refund_card_cost_record.REFUND_CARD_COST IS NULL THEN 0.00 ELSE tf_refund_card_cost_record.REFUND_CARD_COST END ) AS 'REFUND_CARD_COST',
      ( CASE WHEN tf_cash_extract_record.EXTRACT_MONEY IS NULL THEN 0.00 ELSE tf_cash_extract_record.EXTRACT_MONEY END ) AS 'EXTRACT_MONEY',
      ( CASE WHEN tf_member_less_record_refundBalance.refundBalance IS NULL THEN 0.00 ELSE tf_member_less_record_refundBalance.refundBalance END ) AS 'refundBalance',
      ( CASE WHEN tf_cash_extract_record.SUBSIDY_MONEY IS NULL THEN 0.00 ELSE tf_cash_extract_record.SUBSIDY_MONEY END ) AS 'SUBSIDY_MONEY',
      '0' AS 'refundMachine',
      ( CASE WHEN totalAddMoney.totalAddMoney IS NULL THEN 0.00 ELSE totalAddMoney.totalAddMoney END ) AS 'totalAddMoney',
      ( CASE WHEN zxc.TOL_CCR_MONEY IS NULL THEN 0.00 ELSE zxc.TOL_CCR_MONEY END ) AS 'TOL_CCR_MONEY'
   FROM
      hospital_date_record
      LEFT JOIN (
      SELECT
         date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
         sum( CASH_MONEY ) AS 'CASH_MONEY',
         sum( SUBSIDY_MONEY ) AS 'SUBSIDY_MONEY'
      FROM
         tf_member_recharge_record
      WHERE
         RECHARGE_TYPE IN ( '0', '4' )
      GROUP BY
         date_format( CREATETIME, '%Y-%m-%d' )
      ) tf_member_recharge_record ON hospital_date_record.DATE = tf_member_recharge_record.daydate
      LEFT JOIN (
      SELECT
         date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
         sum( LESS_MONEY ) AS 'RefundToError'
      FROM
         tf_member_less_record
      WHERE
         LESS_TYPE IN ( '3', '4' )
      GROUP BY
         date_format( CREATETIME, '%Y-%m-%d' )
      ) tf_member_less_record ON hospital_date_record.DATE = tf_member_less_record.daydate
      LEFT JOIN ( SELECT date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate', sum( OPEN_MONEY ) AS 'accountMoney' FROM tf_open_account_money_record GROUP BY date_format( CREATETIME, '%Y-%m-%d' ) ) tf_open_account_money_record ON hospital_date_record.DATE = tf_open_account_money_record.daydate
      LEFT JOIN (
      SELECT
         date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
         sum( CARD_COST ) AS 'CARD_COST'
      FROM
         tf_card_cost_record
      WHERE
         PAY_STATUS = '1'
         AND REFUND_STATUS = '0'
      GROUP BY
         date_format( CREATETIME, '%Y-%m-%d' )
      ) tf_card_cost_record ON hospital_date_record.DATE = tf_card_cost_record.daydate
      LEFT JOIN (
      SELECT
         date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
         sum( CARD_COST ) AS 'REFUND_CARD_COST'
      FROM
         tf_card_cost_record
      WHERE
         PAY_STATUS = '1'
         AND REFUND_STATUS = '1'
      GROUP BY
         date_format( CREATETIME, '%Y-%m-%d' )
      ) tf_refund_card_cost_record ON hospital_date_record.DATE = tf_refund_card_cost_record.daydate
      LEFT JOIN (
      SELECT
         date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
         sum( CASH_MONEY ) AS 'EXTRACT_MONEY',
         sum( SUBSIDY_MONEY ) AS 'refundBalance'
      FROM
         tf_member_less_record
      WHERE
         LESS_TYPE = '1'
      GROUP BY
         date_format( CREATETIME, '%Y-%m-%d' )
      ) tf_member_less_record_refundBalance ON hospital_date_record.DATE = tf_member_less_record_refundBalance.daydate
      LEFT JOIN (
      SELECT
         date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
         sum( SUBSIDY_EXTRACT_MONEY ) AS 'SUBSIDY_MONEY',
         sum( EXTRACT_MONEY ) AS 'EXTRACT_MONEY'
      FROM
         tf_cash_extract_record
      GROUP BY
         date_format( CREATETIME, '%Y-%m-%d' )
      ) tf_cash_extract_record ON hospital_date_record.DATE = tf_cash_extract_record.daydate
      LEFT JOIN (
      SELECT
         date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
         sum( CCR_MONEY ) AS 'CCR_MONEY'
      FROM
         tf_consume_card_record
      WHERE
         CCR_PAY_TYPE = '0'
         AND CCR_STATUS = '1'
         AND REFUND_STATUS = '0'
      GROUP BY
         date_format( CREATETIME, '%Y-%m-%d' )
      ) tf_consume_card_record ON hospital_date_record.DATE = tf_consume_card_record.daydate
      LEFT JOIN (
      SELECT
         date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
         sum( CCR_MONEY ) AS 'TOL_CCR_MONEY'
      FROM
         tf_consume_card_record
      WHERE
         CCR_STATUS = '1'
         AND REFUND_STATUS = '0'
      GROUP BY
         date_format( CREATETIME, '%Y-%m-%d' )
      ) zxc ON hospital_date_record.DATE = zxc.daydate
      LEFT JOIN (
      SELECT
         e.DATE,
         ( e.RECHARGE_MONEY + e.LESS_MONEY + e.OPEN_MONEY + e.CARD_COST ) AS 'totalAddMoney'
      FROM
         (
         SELECT
            hospital_date_record.DATE,
            ( CASE WHEN a.RECHARGE_MONEY IS NULL THEN 0 ELSE a.RECHARGE_MONEY END ) AS 'RECHARGE_MONEY',
            ( CASE WHEN b.LESS_MONEY IS NULL THEN 0 ELSE b.LESS_MONEY END ) AS 'LESS_MONEY',
            ( CASE WHEN c.OPEN_MONEY IS NULL THEN 0 ELSE c.OPEN_MONEY END ) AS 'OPEN_MONEY',
            ( CASE WHEN d.CARD_COST IS NULL THEN 0 ELSE d.CARD_COST END ) AS 'CARD_COST'
         FROM
            hospital_date_record
            LEFT JOIN (
            SELECT
               date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
               sum( RECHARGE_MONEY ) AS 'RECHARGE_MONEY'
            FROM
               tf_member_recharge_record
            WHERE
               REFUND_STATUS = '0'
               AND RECHARGE_TYPE IN ( '0', '4' )
            GROUP BY
               date_format( CREATETIME, '%Y-%m-%d' )
            ) a ON hospital_date_record.DATE = a.daydate
            LEFT JOIN (
            SELECT
               date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
               sum( LESS_MONEY ) AS 'LESS_MONEY'
            FROM
               tf_member_less_record
            WHERE
               LESS_TYPE = '3'
            GROUP BY
               date_format( CREATETIME, '%Y-%m-%d' )
            ) b ON hospital_date_record.DATE = b.daydate
            LEFT JOIN ( SELECT date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate', sum( OPEN_MONEY ) AS 'OPEN_MONEY' FROM tf_open_account_money_record GROUP BY date_format( CREATETIME, '%Y-%m-%d' ) ) c ON hospital_date_record.DATE = c.daydate
            LEFT JOIN (
            SELECT
               date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
               sum( CARD_COST ) AS 'CARD_COST'
            FROM
               tf_card_cost_record
            WHERE
               REFUND_STATUS = '0'
            GROUP BY
               date_format( CREATETIME, '%Y-%m-%d' )
            ) d ON hospital_date_record.DATE = d.daydate
         ) e
      ) totalAddMoney ON hospital_date_record.DATE = totalAddMoney.DATE
   WHERE
      hospital_date_record.DATE BETWEEN '2022-05-19'
      AND '2022-05-24'
   ORDER BY
      hospital_date_record.DATE ASC
   ) total UNION ALL
SELECT
   totalNumber.DATE,
   totalNumber.CASH_RECHARGE_MONEY,
   totalNumber.SUBSIDY_RECHARGE_MONEY,
   totalNumber.accountMoney,
   totalNumber.CARD_COST,
   totalNumber.TOL_CASH,
   totalNumber.RefundToError,
   totalNumber.REFUND_CARD_COST,
   totalNumber.EXTRACT_MONEY,
   totalNumber.refundBalance,
   totalNumber.TOL_SUBSIDY,
   totalNumber.TOTAL_INCREASE,
   totalNumber.TOL_CCR_MONEY,
   totalNumber.REMAINING_AMOUNT,
   totalNumber.CASH_PAY
FROM
   (
   SELECT
      '上月余额' AS 'DATE',
      '--' AS 'CASH_RECHARGE_MONEY',
      '--' AS 'SUBSIDY_RECHARGE_MONEY',
      '--' AS 'accountMoney',
      '--' AS 'CARD_COST',
      '--' AS 'TOL_CASH',
      '--' AS 'RefundToError',
      '--' AS 'REFUND_CARD_COST',
      '--' AS 'EXTRACT_MONEY',
      '--' AS 'refundBalance',
      '--' AS 'TOL_SUBSIDY',
      '--' AS 'TOTAL_INCREASE',
      '--' AS 'TOL_CCR_MONEY',
      sum((
            (
               ( total.CASH_RECHARGE_MONEY + SUBSIDY_RECHARGE_MONEY + total.accountMoney + total.CARD_COST ) - ( total.RefundToError + total.REFUND_CARD_COST + total.EXTRACT_MONEY + total.refundBalance + total.TOL_CCR_MONEY )
            ) - total.TOL_CCR_MONEY
         )) AS 'REMAINING_AMOUNT',
      '--' AS 'CASH_PAY'
   FROM
      (
      SELECT
         hospital_date_record.DATE,
         ( CASE WHEN tf_member_recharge_record.CASH_MONEY IS NULL THEN 0.00 ELSE tf_member_recharge_record.CASH_MONEY END ) AS 'CASH_RECHARGE_MONEY',
         ( CASE WHEN tf_member_recharge_record.SUBSIDY_MONEY IS NULL THEN 0.00 ELSE tf_member_recharge_record.SUBSIDY_MONEY END ) AS 'SUBSIDY_RECHARGE_MONEY',
         ( CASE WHEN tf_member_less_record.RefundToError IS NULL THEN 0.00 ELSE tf_member_less_record.RefundToError END ) AS 'RefundToError',
         ( CASE WHEN tf_open_account_money_record.accountMoney IS NULL THEN 0.00 ELSE tf_open_account_money_record.accountMoney END ) AS 'accountMoney',
         ( CASE WHEN tf_card_cost_record.CARD_COST IS NULL THEN 0.00 ELSE tf_card_cost_record.CARD_COST END ) AS 'CARD_COST',
         '0' AS 'payMachine',
         ( CASE WHEN tf_refund_card_cost_record.REFUND_CARD_COST IS NULL THEN 0.00 ELSE tf_refund_card_cost_record.REFUND_CARD_COST END ) AS 'REFUND_CARD_COST',
         ( CASE WHEN tf_cash_extract_record.EXTRACT_MONEY IS NULL THEN 0.00 ELSE tf_cash_extract_record.EXTRACT_MONEY END ) AS 'EXTRACT_MONEY',
         ( CASE WHEN tf_member_less_record_refundBalance.refundBalance IS NULL THEN 0.00 ELSE tf_member_less_record_refundBalance.refundBalance END ) AS 'refundBalance',
         ( CASE WHEN tf_cash_extract_record.SUBSIDY_MONEY IS NULL THEN 0.00 ELSE tf_cash_extract_record.SUBSIDY_MONEY END ) AS 'SUBSIDY_MONEY',
         '0' AS 'refundMachine',
         ( CASE WHEN totalAddMoney.totalAddMoney IS NULL THEN 0.00 ELSE totalAddMoney.totalAddMoney END ) AS 'totalAddMoney',
         ( CASE WHEN zxc.TOL_CCR_MONEY IS NULL THEN 0.00 ELSE zxc.TOL_CCR_MONEY END ) AS 'TOL_CCR_MONEY'
      FROM
         hospital_date_record
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( CASH_MONEY ) AS 'CASH_MONEY',
            sum( SUBSIDY_MONEY ) AS 'SUBSIDY_MONEY'
         FROM
            tf_member_recharge_record
         WHERE
            RECHARGE_TYPE IN ( '0', '4' )
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) tf_member_recharge_record ON hospital_date_record.DATE = tf_member_recharge_record.daydate
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( LESS_MONEY ) AS 'RefundToError'
         FROM
            tf_member_less_record
         WHERE
            LESS_TYPE IN ( '3', '4' )
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) tf_member_less_record ON hospital_date_record.DATE = tf_member_less_record.daydate
         LEFT JOIN ( SELECT date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate', sum( OPEN_MONEY ) AS 'accountMoney' FROM tf_open_account_money_record GROUP BY date_format( CREATETIME, '%Y-%m-%d' ) ) tf_open_account_money_record ON hospital_date_record.DATE = tf_open_account_money_record.daydate
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( CARD_COST ) AS 'CARD_COST'
         FROM
            tf_card_cost_record
         WHERE
            PAY_STATUS = '1'
            AND REFUND_STATUS = '0'
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) tf_card_cost_record ON hospital_date_record.DATE = tf_card_cost_record.daydate
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( CARD_COST ) AS 'REFUND_CARD_COST'
         FROM
            tf_card_cost_record
         WHERE
            PAY_STATUS = '1'
            AND REFUND_STATUS = '1'
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) tf_refund_card_cost_record ON hospital_date_record.DATE = tf_refund_card_cost_record.daydate
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( CASH_MONEY ) AS 'EXTRACT_MONEY',
            sum( SUBSIDY_MONEY ) AS 'refundBalance'
         FROM
            tf_member_less_record
         WHERE
            LESS_TYPE = '1'
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) tf_member_less_record_refundBalance ON hospital_date_record.DATE = tf_member_less_record_refundBalance.daydate
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( CCR_MONEY ) AS 'CCR_MONEY'
         FROM
            tf_consume_card_record
         WHERE
            CCR_PAY_TYPE = '0'
            AND CCR_STATUS = '1'
            AND REFUND_STATUS = '0'
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) tf_consume_card_record ON hospital_date_record.DATE = tf_consume_card_record.daydate
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( CCR_MONEY ) AS 'TOL_CCR_MONEY'
         FROM
            tf_consume_card_record
         WHERE
            CCR_STATUS = '1'
            AND REFUND_STATUS = '0'
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) zxc ON hospital_date_record.DATE = zxc.daydate
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( SUBSIDY_EXTRACT_MONEY ) AS 'SUBSIDY_MONEY',
            sum( EXTRACT_MONEY ) AS 'EXTRACT_MONEY'
         FROM
            tf_cash_extract_record
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) tf_cash_extract_record ON hospital_date_record.DATE = tf_cash_extract_record.daydate
         LEFT JOIN (
         SELECT
            e.DATE,
            ( e.RECHARGE_MONEY + e.LESS_MONEY + e.OPEN_MONEY + e.CARD_COST ) AS 'totalAddMoney'
         FROM
            (
            SELECT
               hospital_date_record.DATE,
               ( CASE WHEN a.RECHARGE_MONEY IS NULL THEN 0 ELSE a.RECHARGE_MONEY END ) AS 'RECHARGE_MONEY',
               ( CASE WHEN b.LESS_MONEY IS NULL THEN 0 ELSE b.LESS_MONEY END ) AS 'LESS_MONEY',
               ( CASE WHEN c.OPEN_MONEY IS NULL THEN 0 ELSE c.OPEN_MONEY END ) AS 'OPEN_MONEY',
               ( CASE WHEN d.CARD_COST IS NULL THEN 0 ELSE d.CARD_COST END ) AS 'CARD_COST'
            FROM
               hospital_date_record
               LEFT JOIN (
               SELECT
                  date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
                  sum( RECHARGE_MONEY ) AS 'RECHARGE_MONEY'
               FROM
                  tf_member_recharge_record
               WHERE
                  REFUND_STATUS = '0'
                  AND RECHARGE_TYPE IN ( '0', '4' )
               GROUP BY
                  date_format( CREATETIME, '%Y-%m-%d' )
               ) a ON hospital_date_record.DATE = a.daydate
               LEFT JOIN (
               SELECT
                  date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
                  sum( LESS_MONEY ) AS 'LESS_MONEY'
               FROM
                  tf_member_less_record
               WHERE
                  LESS_TYPE = '3'
               GROUP BY
                  date_format( CREATETIME, '%Y-%m-%d' )
               ) b ON hospital_date_record.DATE = b.daydate
               LEFT JOIN ( SELECT date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate', sum( OPEN_MONEY ) AS 'OPEN_MONEY' FROM tf_open_account_money_record GROUP BY date_format( CREATETIME, '%Y-%m-%d' ) ) c ON hospital_date_record.DATE = c.daydate
               LEFT JOIN (
               SELECT
                  date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
                  sum( CARD_COST ) AS 'CARD_COST'
               FROM
                  tf_card_cost_record
               WHERE
                  REFUND_STATUS = '0'
               GROUP BY
                  date_format( CREATETIME, '%Y-%m-%d' )
               ) d ON hospital_date_record.DATE = d.daydate
            ) e
         ) totalAddMoney ON hospital_date_record.DATE = totalAddMoney.DATE
      WHERE
         hospital_date_record.DATE BETWEEN '1969-01-01'
         AND ( SELECT date_sub( date_sub( date_format( now(), '%y-%m-%d' ), INTERVAL extract( DAY FROM now()) DAY ), INTERVAL 0 MONTH ) AS date )
      ORDER BY
         hospital_date_record.DATE ASC
      ) total
   ) totalNumber UNION ALL
SELECT
   totalNumber.DATE,
   totalNumber.CASH_RECHARGE_MONEY,
   totalNumber.SUBSIDY_RECHARGE_MONEY,
   totalNumber.accountMoney,
   totalNumber.CARD_COST,
   totalNumber.TOL_CASH,
   totalNumber.RefundToError,
   totalNumber.REFUND_CARD_COST,
   totalNumber.EXTRACT_MONEY,
   totalNumber.refundBalance,
   totalNumber.TOL_SUBSIDY,
   totalNumber.TOTAL_INCREASE,
   totalNumber.TOL_CCR_MONEY,
   totalNumber.REMAINING_AMOUNT,
   totalNumber.CASH_PAY
FROM
   (
   SELECT
      '总计' AS 'DATE',
      sum( total.CASH_RECHARGE_MONEY ) AS 'CASH_RECHARGE_MONEY',
      sum( total.SUBSIDY_RECHARGE_MONEY ) AS 'SUBSIDY_RECHARGE_MONEY',
      sum( total.accountMoney ) AS 'accountMoney',
      sum( total.CARD_COST ) AS 'CARD_COST',
      sum((
            total.CASH_RECHARGE_MONEY + total.SUBSIDY_RECHARGE_MONEY + total.accountMoney + total.CARD_COST
         )) AS 'TOL_CASH',
      sum( total.RefundToError ) AS 'RefundToError',
      sum( total.REFUND_CARD_COST ) AS 'REFUND_CARD_COST',
      sum( total.EXTRACT_MONEY ) AS 'EXTRACT_MONEY',
      sum( total.refundBalance ) AS 'refundBalance',
      sum((
            total.RefundToError + total.REFUND_CARD_COST + total.EXTRACT_MONEY + total.refundBalance
         )) AS 'TOL_SUBSIDY',
      sum((
            ( total.CASH_RECHARGE_MONEY + SUBSIDY_RECHARGE_MONEY + total.accountMoney + total.CARD_COST ) - ( total.RefundToError + total.REFUND_CARD_COST + total.EXTRACT_MONEY + total.refundBalance + total.TOL_CCR_MONEY )
         )) AS 'TOTAL_INCREASE',
      sum( total.TOL_CCR_MONEY ) AS 'TOL_CCR_MONEY',
      sum((
            (
               ( total.CASH_RECHARGE_MONEY + SUBSIDY_RECHARGE_MONEY + total.accountMoney + total.CARD_COST ) - ( total.RefundToError + total.REFUND_CARD_COST + total.EXTRACT_MONEY + total.refundBalance + total.TOL_CCR_MONEY )
            ) - total.TOL_CCR_MONEY
         )) AS 'REMAINING_AMOUNT',
      sum((
            total.CASH_RECHARGE_MONEY + total.accountMoney + total.CARD_COST
         )) AS 'CASH_PAY'
   FROM
      (
      SELECT
         hospital_date_record.DATE,
         ( CASE WHEN tf_member_recharge_record.CASH_MONEY IS NULL THEN 0.00 ELSE tf_member_recharge_record.CASH_MONEY END ) AS 'CASH_RECHARGE_MONEY',
         ( CASE WHEN tf_member_recharge_record.SUBSIDY_MONEY IS NULL THEN 0.00 ELSE tf_member_recharge_record.SUBSIDY_MONEY END ) AS 'SUBSIDY_RECHARGE_MONEY',
         ( CASE WHEN tf_member_less_record.RefundToError IS NULL THEN 0.00 ELSE tf_member_less_record.RefundToError END ) AS 'RefundToError',
         ( CASE WHEN tf_open_account_money_record.accountMoney IS NULL THEN 0.00 ELSE tf_open_account_money_record.accountMoney END ) AS 'accountMoney',
         ( CASE WHEN tf_card_cost_record.CARD_COST IS NULL THEN 0.00 ELSE tf_card_cost_record.CARD_COST END ) AS 'CARD_COST',
         '0' AS 'payMachine',
         ( CASE WHEN tf_refund_card_cost_record.REFUND_CARD_COST IS NULL THEN 0.00 ELSE tf_refund_card_cost_record.REFUND_CARD_COST END ) AS 'REFUND_CARD_COST',
         ( CASE WHEN tf_cash_extract_record.EXTRACT_MONEY IS NULL THEN 0.00 ELSE tf_cash_extract_record.EXTRACT_MONEY END ) AS 'EXTRACT_MONEY',
         ( CASE WHEN tf_member_less_record_refundBalance.refundBalance IS NULL THEN 0.00 ELSE tf_member_less_record_refundBalance.refundBalance END ) AS 'refundBalance',
         ( CASE WHEN tf_cash_extract_record.SUBSIDY_MONEY IS NULL THEN 0.00 ELSE tf_cash_extract_record.SUBSIDY_MONEY END ) AS 'SUBSIDY_MONEY',
         '0' AS 'refundMachine',
         ( CASE WHEN totalAddMoney.totalAddMoney IS NULL THEN 0.00 ELSE totalAddMoney.totalAddMoney END ) AS 'totalAddMoney',
         ( CASE WHEN zxc.TOL_CCR_MONEY IS NULL THEN 0.00 ELSE zxc.TOL_CCR_MONEY END ) AS 'TOL_CCR_MONEY'
      FROM
         hospital_date_record
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( CASH_MONEY ) AS 'CASH_MONEY',
            sum( SUBSIDY_MONEY ) AS 'SUBSIDY_MONEY'
         FROM
            tf_member_recharge_record
         WHERE
            RECHARGE_TYPE IN ( '0', '4' )
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) tf_member_recharge_record ON hospital_date_record.DATE = tf_member_recharge_record.daydate
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( LESS_MONEY ) AS 'RefundToError'
         FROM
            tf_member_less_record
         WHERE
            LESS_TYPE IN ( '3', '4' )
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) tf_member_less_record ON hospital_date_record.DATE = tf_member_less_record.daydate
         LEFT JOIN ( SELECT date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate', sum( OPEN_MONEY ) AS 'accountMoney' FROM tf_open_account_money_record GROUP BY date_format( CREATETIME, '%Y-%m-%d' ) ) tf_open_account_money_record ON hospital_date_record.DATE = tf_open_account_money_record.daydate
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( CARD_COST ) AS 'CARD_COST'
         FROM
            tf_card_cost_record
         WHERE
            PAY_STATUS = '1'
            AND REFUND_STATUS = '0'
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) tf_card_cost_record ON hospital_date_record.DATE = tf_card_cost_record.daydate
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( CARD_COST ) AS 'REFUND_CARD_COST'
         FROM
            tf_card_cost_record
         WHERE
            PAY_STATUS = '1'
            AND REFUND_STATUS = '1'
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) tf_refund_card_cost_record ON hospital_date_record.DATE = tf_refund_card_cost_record.daydate
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( CASH_MONEY ) AS 'EXTRACT_MONEY',
            sum( SUBSIDY_MONEY ) AS 'refundBalance'
         FROM
            tf_member_less_record
         WHERE
            LESS_TYPE = '1'
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) tf_member_less_record_refundBalance ON hospital_date_record.DATE = tf_member_less_record_refundBalance.daydate
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( CCR_MONEY ) AS 'CCR_MONEY'
         FROM
            tf_consume_card_record
         WHERE
            CCR_PAY_TYPE = '0'
            AND CCR_STATUS = '1'
            AND REFUND_STATUS = '0'
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) tf_consume_card_record ON hospital_date_record.DATE = tf_consume_card_record.daydate
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( CCR_MONEY ) AS 'TOL_CCR_MONEY'
         FROM
            tf_consume_card_record
         WHERE
            CCR_STATUS = '1'
            AND REFUND_STATUS = '0'
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) zxc ON hospital_date_record.DATE = zxc.daydate
         LEFT JOIN (
         SELECT
            date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
            sum( SUBSIDY_EXTRACT_MONEY ) AS 'SUBSIDY_MONEY',
            sum( EXTRACT_MONEY ) AS 'EXTRACT_MONEY'
         FROM
            tf_cash_extract_record
         GROUP BY
            date_format( CREATETIME, '%Y-%m-%d' )
         ) tf_cash_extract_record ON hospital_date_record.DATE = tf_cash_extract_record.daydate
         LEFT JOIN (
         SELECT
            e.DATE,
            ( e.RECHARGE_MONEY + e.LESS_MONEY + e.OPEN_MONEY + e.CARD_COST ) AS 'totalAddMoney'
         FROM
            (
            SELECT
               hospital_date_record.DATE,
               ( CASE WHEN a.RECHARGE_MONEY IS NULL THEN 0 ELSE a.RECHARGE_MONEY END ) AS 'RECHARGE_MONEY',
               ( CASE WHEN b.LESS_MONEY IS NULL THEN 0 ELSE b.LESS_MONEY END ) AS 'LESS_MONEY',
               ( CASE WHEN c.OPEN_MONEY IS NULL THEN 0 ELSE c.OPEN_MONEY END ) AS 'OPEN_MONEY',
               ( CASE WHEN d.CARD_COST IS NULL THEN 0 ELSE d.CARD_COST END ) AS 'CARD_COST'
            FROM
               hospital_date_record
               LEFT JOIN (
               SELECT
                  date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
                  sum( RECHARGE_MONEY ) AS 'RECHARGE_MONEY'
               FROM
                  tf_member_recharge_record
               WHERE
                  REFUND_STATUS = '0'
                  AND RECHARGE_TYPE IN ( '0', '4' )
               GROUP BY
                  date_format( CREATETIME, '%Y-%m-%d' )
               ) a ON hospital_date_record.DATE = a.daydate
               LEFT JOIN (
               SELECT
                  date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
                  sum( LESS_MONEY ) AS 'LESS_MONEY'
               FROM
                  tf_member_less_record
               WHERE
                  LESS_TYPE = '3'
               GROUP BY
                  date_format( CREATETIME, '%Y-%m-%d' )
               ) b ON hospital_date_record.DATE = b.daydate
               LEFT JOIN ( SELECT date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate', sum( OPEN_MONEY ) AS 'OPEN_MONEY' FROM tf_open_account_money_record GROUP BY date_format( CREATETIME, '%Y-%m-%d' ) ) c ON hospital_date_record.DATE = c.daydate
               LEFT JOIN (
               SELECT
                  date_format( CREATETIME, '%Y-%m-%d' ) AS 'daydate',
                  sum( CARD_COST ) AS 'CARD_COST'
               FROM
                  tf_card_cost_record
               WHERE
                  REFUND_STATUS = '0'
               GROUP BY
                  date_format( CREATETIME, '%Y-%m-%d' )
               ) d ON hospital_date_record.DATE = d.daydate
            ) e
         ) totalAddMoney ON hospital_date_record.DATE = totalAddMoney.DATE
      WHERE
         hospital_date_record.DATE BETWEEN '2022-05-19'
         AND '2022-05-24'
      ORDER BY
         hospital_date_record.DATE ASC
      ) total
   ) totalNumber
   LIMIT 0,
   10


查询结果如下:

屏幕截图 2022-10-14 142625.png

4、遇到的问题和收获:

这次主要练习的还是表的逻辑关系,还有mysql中的left join 和 union all 还有as 取别名的灵活使用

1)、union all 的前后两段sql查询的字段数量必须一致

2)mysql获取的一些日期
#获取当前日期
select curdate();

#获取当月最后一天
select last_day(curdate())

#获取本月的第一天
select date_add(curdate(),interval -day(curdate())+1 day) ;

#获取下个月的第一天
select date_add(curdate() - day(curdate()) +1,interval 1 month );

#获取当前月已过了几天
select day(curdate());

#获取当前月的天数(先加一个月,再减今天是第几天,得到当前月的最后一天,最后求最后一天是几号)
select day(date_add( date_add(curdate(),interval 1 month),interval -day(curdate()) day ));

#上个月的第一天
select date_sub(date_sub(date_format(now(),'%y-%m-%d'),interval extract( day from now())-1 day),interval 1 month)

#上个月的最后一天
select date_sub(date_sub(date_format(now(),'%y-%m-%d'),interval extract( day from now()) day),interval 0 month) as date

#这个月的第一天
select date_sub(date_sub(date_format(now(),'%y-%m-%d'),interval extract( day from now())-1 day),interval 0 month)

#获取当月最后一天
select last_day(curdate())



4、最后:

这两张表的sql一张600多行一张350多行,真的事搞得头都大了,写到Java代码里去就1000行,还是第一次完成这么长的sql,我相信经历这次需求,mysql方面的进步还是有一点的,当以后遇到复杂繁琐的一大段sql的时候不会像以前一样无从下手了, 不会给自己设置一个无法完成的提示了,挑战难度更大需求的阈值也应该更高了,不会再看见sql一长就退缩了,毕竟本人也是写过600行复杂sql的人了嘛,哈哈哈哈哈哈