qq_31422159 2015-12-17 01:48 采纳率: 0%
浏览 2267

mysql的查询sql语句转换成oracle的sql

SELECT
CREATE_DATE,
SUM(ISBIND) AS ISBIND,
SUM(UNBIND) AS UNBIND,
SUM(SUBSCRIBE) AS SUBSCRIBE,
SUM(UNSUBSCRIBE) AS UNSUBSCRIBE
FROM
(
SELECT
N.CREATE_DATE,
MAX(
CASE N.EVENT
WHEN 'subscribe' THEN
COUNT
ELSE
0
END
) SUBSCRIBE,
MAX(
CASE N.EVENT
WHEN 'unsubscribe' THEN
COUNT
ELSE
0
END
) UNSUBSCRIBE,
0 ISBIND,
0 UNBIND
FROM
(
SELECT
C.CREATE_DATE,
C.EVENT,
COUNT(C.EVENT) COUNT
FROM
(
SELECT
STR_TO_DATE(X.CREATE_DATE, '%Y-%m-%d') AS CREATE_DATE,
X.EVENT
FROM
TBL_WX_MP_XML_MESSAGE X
WHERE
X.MSG_TYPE = 'event'
AND X.EVENT in ('unsubscribe','subscribe')
) C
GROUP BY
C.CREATE_DATE,
C.EVENT
ORDER BY
C.EVENT
) AS N
WHERE
N.CREATE_DATE IS NOT NULL
GROUP BY
N.CREATE_DATE
UNION
SELECT
*
FROM
(
SELECT
B.BINDTIME AS CREATE_DATE,
0 AS SUBSCRIBE,
0 AS UNSUBSCRIBE,
MAX(
CASE B.ISBIND
WHEN 1 THEN
B.COUNT
ELSE
0
END
) ISBIND,
MAX(
CASE B.ISBIND
WHEN 0 THEN
B.COUNT
ELSE
0
END
) UNBIND
FROM
(
SELECT
STR_TO_DATE(U.BINDTIME, '%Y-%m-%d') AS BINDTIME,
U.ISBIND,
COUNT(U.ISBIND) COUNT
FROM
tbl_wx_mp_user u
WHERE
U.ISBIND IS NOT NULL
GROUP BY
STR_TO_DATE(U.BINDTIME, '%Y-%m-%d'),
U.ISBIND
) B
GROUP BY
B.BINDTIME
) B
) A
WHERE
1 = 1
AND A.CREATE_DATE >= STR_TO_DATE('2015-12-11', '%Y-%m-%d')

            AND STR_TO_DATE(A.CREATE_DATE, '%Y-%m-%d') <= STR_TO_DATE('2015-12-17', '%Y-%m-%d')

    GROUP BY
        A.CREATE_DATE
    ORDER BY
        A.CREATE_DATE DESC
  • 写回答

1条回答 默认 最新

  • _Matthew 2023-11-21 09:44
    关注
    SELECT
        CREATE_DATE,
        SUM(ISBIND) AS ISBIND,
        SUM(UNBIND) AS UNBIND,
        SUM(SUBSCRIBE) AS SUBSCRIBE,
        SUM(UNSUBSCRIBE) AS UNSUBSCRIBE
    FROM
        (
            SELECT
                N.CREATE_DATE,
                MAX(
                    CASE N.EVENT
                        WHEN 'subscribe' THEN COUNT
                        ELSE 0
                    END
                ) AS SUBSCRIBE,
                MAX(
                    CASE N.EVENT
                        WHEN 'unsubscribe' THEN COUNT
                        ELSE 0
                    END
                ) AS UNSUBSCRIBE,
                0 AS ISBIND,
                0 AS UNBIND
            FROM
                (
                    SELECT
                        C.CREATE_DATE,
                        C.EVENT,
                        COUNT(C.EVENT) AS COUNT
                    FROM
                        (
                            SELECT
                                TO_DATE(X.CREATE_DATE, 'YYYY-MM-DD') AS CREATE_DATE,
                                X.EVENT
                            FROM
                                TBL_WX_MP_XML_MESSAGE X
                            WHERE
                                X.MSG_TYPE = 'event'
                                AND X.EVENT IN ('unsubscribe', 'subscribe')
                        ) C
                    GROUP BY
                        C.CREATE_DATE,
                        C.EVENT
                    ORDER BY
                        C.EVENT
                ) N
            WHERE
                N.CREATE_DATE IS NOT NULL
            GROUP BY
                N.CREATE_DATE
    
            UNION
    
            SELECT
                *
            FROM
                (
                    SELECT
                        B.BINDTIME AS CREATE_DATE,
                        0 AS SUBSCRIBE,
                        0 AS UNSUBSCRIBE,
                        MAX(
                            CASE B.ISBIND
                                WHEN 1 THEN B.COUNT
                                ELSE 0
                            END
                        ) AS ISBIND,
                        MAX(
                            CASE B.ISBIND
                                WHEN 0 THEN B.COUNT
                                ELSE 0
                            END
                        ) AS UNBIND
                    FROM
                        (
                            SELECT
                                TO_DATE(U.BINDTIME, 'YYYY-MM-DD') AS BINDTIME,
                                U.ISBIND,
                                COUNT(U.ISBIND) AS COUNT
                            FROM
                                tbl_wx_mp_user U
                            WHERE
                                U.ISBIND IS NOT NULL
                            GROUP BY
                                TO_DATE(U.BINDTIME, 'YYYY-MM-DD'),
                                U.ISBIND
                        ) B
                    GROUP BY
                        B.BINDTIME
                ) B
        ) A
    WHERE
        1 = 1
        AND A.CREATE_DATE >= TO_DATE('2015-12-11', 'YYYY-MM-DD')
        AND TO_DATE(A.CREATE_DATE, 'YYYY-MM-DD') <= TO_DATE('2015-12-17', 'YYYY-MM-DD')
    GROUP BY
        A.CREATE_DATE
    ORDER BY
        A.CREATE_DATE DESC;
    
    评论

报告相同问题?

悬赏问题

  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
  • ¥15 写论文,需要数据支撑