mysql实现分组和组内序号

SELECT
    CASE
WHEN @mid = t.PAY_TIME THEN
    @ROW :=@ROW + 1
ELSE
    @ROW := 1
END SEQ,
 @mid := t.PAY_TIME,
 t.AMOUNTS,
 t.CHARGE_PRICE,
 t.MONEY,
 t.PAY_TIME AS CHARGE_TIME,
 t.PRODUCT_ID,
 t.PRODUCT_NAME,
 t.CANRETURNCOUNT,
 t.ID
FROM
    (
        SELECT
            bmb.ID,
            bmb.PRODUCT_ID,
            bmb.PRODUCT_NAME,
            bmb.AMOUNTS,
            bmb.MONEY,
            bmbc.CHARGE_PRICE,
            bmpr.PAY_TIME,
            (
                bmb.AMOUNTS - IFNULL(
                    (
                        SELECT
                            SUM(bmb1.AMOUNTS)
                        FROM
                            B_MYGAS_BILLS bmb1
                        WHERE
                            bmb1.ID IN (
                                SELECT
                                    bmbrr.BILLS_RETURN_ID
                                FROM
                                    B_MYGAS_BILLS_RETURN_RELATION bmbrr
                                WHERE
                                    bmbrr.BILLS_ID = bmb.ID
                            )
                    ),
                    0
                )
            ) AS CANRETURNCOUNT
        FROM
            B_MYGAS_BILLS bmb
        LEFT JOIN B_MYGAS_BILLS_PAYMENTDETAILS bmbp ON bmbp.BILLS_ID = bmb.ID
        LEFT JOIN B_MYGAS_BILLS_CHARGEDETAILS bmbc ON bmbc.BILLS_ID = bmb.ID
        LEFT JOIN B_MYGAS_PAY_RECORD bmpr ON bmpr.ID = bmbp.BILLS_PAYMENTID
        WHERE
            1 = 1
        AND bmb.PRODUCT_ID NOT IN (
            '10000001',
            '10000002',
            '10000003',
            '10000004',
            '10000013',
            '10000028',
            '90000001'
        )
        AND bmbp.BILLS_PAYMENTID IN (
            SELECT
                bmpr.ID
            FROM
                B_MYGAS_PAY_RECORD bmpr
            LEFT JOIN B_MYGAS_BIZ_REC bmbr ON bmbr.ID = bmpr.BIZ_REC_ID
            WHERE
                1 = 1
            AND bmpr.SERVICEPOINT_ID = '0220020cf1dc4535b4273fbe60d48503'
            AND bmbr.BIZ_MODE = '10000012'
            AND bmbr.BIZ_STATUS = '1'
        )
    ) t
LEFT JOIN (SELECT @ROW := 0) f ON 1 = 1
LEFT JOIN (SELECT @mid := '') g ON 1 = 1
ORDER BY
    t.PAY_TIME DESC,
    SEQ ASC

 

posted @ 2016-10-28 17:32  zhaohc2279  阅读(1466)  评论(0编辑  收藏  举报