-- ============================================================
-- 脚本名称: transfer_summary.sql
-- 功    能: 指定年月的转卡汇总报表（按下级代理分组，含合计行）
-- 数据库  : agent_db
-- 用    法:
--   1. 修改下方【参数设置】中的变量值
--   2. 在 Navicat 中执行全部脚本
--   3. 结果集右键 → Export → Excel 可导出表格
-- ============================================================


-- ============================================================
-- 【参数设置】 ← 修改这里
-- ============================================================
SET @p_year       = 2026;                                -- 年份
SET @p_month      = 3;                                   -- 月份（1-12）
SET @p_from_sales = 10437216;                            -- 发卡来源代理ID（上级代理）
SET @p_agent_id   = 'veRa0qrBf0df2K1G4de2tgfmVxB2jxpv'; -- 代理商ID


-- ============================================================
-- 【汇总报表】按下级代理分组，最后一行为转卡总计
-- ============================================================
SELECT
    IF(
        GROUPING(t.satr_salesid),
        '★ 合计',
        CAST(t.satr_salesid AS CHAR)
    )                                   AS '代理ID',
    IF(
        GROUPING(t.satr_salesid),
        '—',
        MAX(su.saus_nickname)
    )                                   AS '代理昵称',
    COUNT(t.idx)                        AS '转卡次数',
    SUM(t.satr_amount)                  AS '转卡总量'
FROM
    sales_transferbill t
    LEFT JOIN sales_user su
        ON  t.satr_agentid  = su.saus_agentid
        AND t.channel_id    = su.saus_channelid
        AND t.satr_salesid  = su.saus_salesid
WHERE
    t.satr_agentid                 = @p_agent_id
    AND t.from_sales               = @p_from_sales
    AND YEAR(t.satr_transfertime)  = @p_year
    AND MONTH(t.satr_transfertime) = @p_month
GROUP BY
    t.satr_salesid WITH ROLLUP;
