56,801
社区成员




create table date(day varchar(100) not null);
create table register(registerCount bigint not null);
create table login(loginCount bigint not null);
select day,registerCount,loginCount
from(
select day from date where day between 20120101 and 20120103)tmp
left join(
select registerCount from register)r on tmp.day=r.day
left join(
select loginCount from login)l on tmp.day=l.day
group by day;
mysql> select
-> type,
-> sum(if(tmp.day = 20120101, registerCount, 0)) as '20120101',
-> sum(if(tmp.day = 20120102, registerCount, 0)) as '20120102',
-> sum(if(tmp.day = 20120103, registerCount, 0)) as '20120103'
-> from
-> (
-> select day
-> from date
-> where day between 20120101 and 20120103
-> )tmp
-> left join
-> (
-> select
-> day,
-> "registerCount" as type,
-> registerCount
-> from register
-> ) r
-> on tmp.day=r.day
-> group by type
->
-> union
-> select
-> type,
-> sum(if(tmp.day = 20120101, loginCount, 0)) as '20120101',
-> sum(if(tmp.day = 20120102, loginCount, 0)) as '20120102',
-> sum(if(tmp.day = 20120103, loginCount, 0)) as '20120103'
-> from
-> (
-> select day
-> from date
-> where day between 20120101 and 20120103
-> )tmp
-> left join
-> (
-> select
-> day,
-> "loginCount" as type,
-> loginCount
-> from login
-> )l
-> on tmp.day=l.day
-> group by type;
+---------------+----------+----------+----------+
| type | 20120101 | 20120102 | 20120103 |
+---------------+----------+----------+----------+
| registerCount | 1 | 2 | 3 |
| loginCount | 4 | 5 | 6 |
+---------------+----------+----------+----------+
2 rows in set (0.00 sec)
mysql>