- 论坛徽章:
- 0
|
不过我写了个巨呆的一个:
SELECT
DISTINCT to_char(mem_reg.regist_date,'yyyymmdd') AS date,
((
SELECT
COUNT(*)
FROM
member_regist_table AS regist
WHERE
regist.service_id = 1 and
regist.carrier_id = 1 and
to_char(regist.regist_date,'yyyymmdd') = to_char(mem_reg.regist_date,'yyyymmdd')
) +
(
SELECT
COUNT(*)
FROM
member_unregist_log AS unregist
WHERE
unregist.service_id = 1 and
unregist.carrier_id = 1 and
to_char(unregist.regist_date,'yyyymmdd') = to_char(mem_reg.regist_date,'yyyymmdd')
)) AS regist,
( SELECT
COUNT(*)
FROM
member_unregist_log AS unregist
WHERE
unregist.service_id = 1 and
unregist.carrier_id = 1 and
to_char(unregist.regist_date,'yyyymmdd') = to_char(mem_reg.regist_date,'yyyymmdd')
) AS unregist,
((
SELECT
COUNT(*)
FROM
member_regist_table AS regist
WHERE
regist.service_id = 1 and
regist.carrier_id = 1 and
to_char(regist.regist_date,'yyyymmdd') = to_char(mem_reg.regist_date,'yyyymmdd')
) +
(
SELECT
COUNT(*)
FROM
member_unregist_log AS unregist
WHERE
unregist.service_id = 1 and
unregist.carrier_id = 1 and
to_char(unregist.regist_date,'yyyymmdd') = to_char(mem_reg.regist_date,'yyyymmdd')
) -
(
SELECT
COUNT(*)
FROM
member_unregist_log AS unregist
WHERE
unregist.service_id = 1 and
unregist.carrier_id = 1 and
to_char(unregist.regist_date,'yyyymmdd') = to_char(mem_reg.regist_date,'yyyymmdd')
)) AS change,
((
SELECT
COUNT(*)
FROM
member_regist_table AS regist
WHERE
regist.service_id = 1 and
regist.carrier_id = 1 and
to_char(regist.regist_date,'yyyymmdd') <= to_char(mem_reg.regist_date,'yyyymmdd')
) +
((
SELECT
COUNT(*)
FROM
member_unregist_log AS unregist
WHERE
unregist.service_id = 1 and
unregist.carrier_id = 1 and
to_char(unregist.regist_date,'yyyymmdd') <= to_char(mem_reg.regist_date,'yyyymmdd')
) -
(
SELECT
COUNT(*)
FROM
member_unregist_log AS unregist
WHERE
unregist.service_id = 1 and
unregist.carrier_id = 1 and
to_char(unregist.unregist_date,'yyyymmdd') <= to_char(mem_reg.regist_date,'yyyymmdd')
))) as validator,
((
SELECT
COUNT(*)
FROM
member_regist_table AS regist
WHERE
regist.service_id = 1 and
regist.carrier_id = 1 and
to_char(regist.regist_date,'yyyymmdd') <= to_char(mem_reg.regist_date,'yyyymmdd')
) +
(
SELECT
COUNT(*)
FROM
member_unregist_log AS unregist
WHERE
unregist.service_id = 1 and
unregist.carrier_id = 1 and
to_char(unregist.regist_date,'yyyymmdd') <= to_char(mem_reg.regist_date,'yyyymmdd')
)) AS total
FROM
member_regist_table as mem_reg
WHERE
to_char(mem_reg.regist_date,'yyyymmdd') <= '20060406'
AND to_char(mem_reg.regist_date,'yyyymmdd') >= '20060401'
ORDER BY
to_char(mem_reg.regist_date,'yyyymmdd') ASC
功能可以实现,就是比较傻一点
不知道有没有更好的办法!
  |
|