SQL问题,求解决select t.orderdate, count(t.ticketid),sum(t.fare),sum(t.fuel_tax),sum(t.airport_tax),
SQL问题,求解决
select t.orderdate, count(t.ticketid),sum(t.fare),sum(t.fuel_tax),sum(t.airport_tax),sum(t.paymoney)
from metticket t
where t.status = '2'
and t.orderdate is not null
group by t.orderdate
order by t.orderdate
这样统计每天的金额,就用日期分组了。
20100929114600501510
201010191920050970
201010201800050850
201010212250001002600
201010255357002503820
201010274233002002530
201010283171001501860
201010296392003004220
201011021680050730
201011051870050920
......
我想实现:没有数据的那天,也能查询到记录。因为没有记录,所有金额都为0
比如20101022没有记录,则为:
2010102200000
不知道怎么实现,求帮助
[解决办法]
把下面的365换成你想要从今天开始统计到过去多少天的数据。
- SQL code
withdate_table as (select (sysdate-level) orderdate from dual connect by level < 365),order_table as (select t.orderdate, count(t.ticketid) cnt, sum(t.fare) sumfare, sum(t.fuel_tax) sumfueltax, sum(t.airport_tax) sumairtax, sum(t.paymoney) sumpay from metticket t where t.status = '2' and t.orderdate is not null group by t.orderdate order by t.orderdate)select date_table.orderdate, decode(cnt,null,0,cnt), decode(sumfare,null,0,sumfare), decode(sumfueltax,null,0,sumfueltax), decode(sumairtax,null,0,sumairtax), decode(sumpay,null,0,sumpay) from date_table left join order_table on date_table.orderdate=order_table.orderdate order by 1;
