select to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyiw') as week, --oracle求当年的第几周
我们提供的服务有:成都网站建设、做网站、微信公众号开发、网站优化、网站认证、梁园ssl等。为成百上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的梁园网站制作公司
to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyww') as week2, --oracle求当年的第几周
to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyy') as year, --oracle求第几年
to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyymm') as month, --oracle求当年的第几月
to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyddd') as day, --oracle求当年的第几天
to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyq') as quarter -- oracle求当年的第几季度
from dual
-----------
SELECT
to_char(sysdate,'day') 星期几,
to_char(SYSDATE,'ddd') 第几天,
to_char(SYSDATE,'ww') 第几周,
to_char(SYSDATE,'mm') 第几月,
to_char(SYSDATE,'q') 第几季
FROM dual
一般情况下,你的明细数据表都有个日期字段来表明你明细的时间,
数据量比较小可以这样
select sum(...) from tabname where to_char(时间,'q')=你想查询的季度
如果数据量比较大,建议你根据明细表建立一个快速刷新的物化视图,物化视图是根据季度、星期等等的预先统计数据,到时候你要的数据直接从物化视图中查询即可
SQL select * from orderr;
PRODID ORDID ORDERDATA
---------- ---------- --------------
1 100 01-1月 -12
2 200 01-1月 -12
SQL select * from PRODUCT;
PRODID PROD
---------- ----
1 车
2 床
SQL select * from ORDERDETAIL;
PRODID PRICE COUNT ORDID
---------- ---------- ---------- ----------
1 50000 10 100
2 30000 15 200
SQL select "PRODUCT"."PRODNA" "产品名称","ORDERR"."ORDERDATA" "订购日期","ORDERDETAIL"."PRICE"*"ORDERDETAIL"."COUNT" "产品销售额",
2 to_char("ORDERR"."ORDERDATA",'q') "订购季度"
3 from PRODUCT,ORDERDETAIL,ORDERR
4 where "PRODUCT"."PRODID"="ORDERDETAIL"."PRODID" AND "ORDERDETAIL"."ORDID"="ORDERR"."ORDID"
5 group by "ORDERR"."ORDERDATA","ORDERDETAIL"."PRICE"*"ORDERDETAIL"."COUNT",to_char("ORDERR"."ORDERDATA",'q'),"PRODUCT"."PRODNA";
产品 订购日期 产品销售额 订购季度
---- -------------- ---------- ----------
床 01-1月 -12 450000 1
车 01-1月 -12 500000 1
有什么问题?
另外说一下:
1、你“产品名称”前面的双引号有问题。
2、在双引号引用中是必须区分大小写的。
3、orderdata前的表名呢?