--代码中1=1是用来写你的过滤条件的
--代码中的表A,写你原来的表名
SELECT T3MONTH, T3CUST, T3ITEM, NVL(T4QTY, 0)
FROM (SELECT MONTH, CUST, ITEM
FROM (SELECT TO_CHAR(201600 + ROWNUM) AS MONTH
FROM DUAL
CONNECT BY ROWNUM <= 12) T1,
(SELECT CUST, ITEM FROM 表A WHERE 1 = 1 GROUP BY CUST, ITEM) T2) T3
LEFT JOIN
--T4这一段查询SQL也就是你提供的那段分组的查询,你可以自己调整
(SELECT Month, Cust, Item, SUM(QTY) AS QTY
FROM 表A
WHERE 1 = 1
GROUP BY Month, Cust, Item) T4
ON T3MONTH = T4MONTH
AND T3CUST = T4CUST
AND T3ITEM = T4ITEM
有问题可以追问,或者私聊
oracle判断连续几个月为0的最大间隔时间,原数据包含记录行生成的时间戳字段OP_TIME和一个自增序列中间可能不连续的单据编号 SWF_NUM,概括起来最大间隔时间为:相邻两条记录的时间戳间隔不超过10分钟。以下是具体的间隔时间 *** 作方法:要求统计相邻两条记录的时间戳间隔不超过10分钟的最大连续记录数,整体思路是:筛选出结果集,处理结果集,对结果集中符合条件和不符合条件的记录打上标签。
过滤掉符合条件的记录,使用 ROW_NUMBER对查询结果第二次排序编号,第三次处理结果集:ROW_NUMBER=ROW_NUMBER1对第二次处理得到的结果集自关联。
同时,通过 ROW_NUMBER() 对结果集排序编号,第二次处理结果集:对处理好的结果集通过 ROWNUMBER=ROW_NUMBER1自关联。
在查询结果中将第一次的排序编号相减,差值-1就是连续记录数,对上述结果分组取最大值,得到最大连续记录数。
现在用ROWNUMBER对筛选好的源数据排序,自关联比较相邻记录的时间差,对符合要求的记录通过ROW_NUMBER在排序,得到的结果通过第二次的ROW_NUMBER值自关联。
在查询结果中用第一次的ROW_NUMBER值求差,差值就是符合条件的连续记录数,分组后取最大值,得到结果。
可以先把日期类型通过 TO_CHAR方法转换为字符串,之后在进行月份查询。
sql:select from tablename WHERE TO_CHAR( dateTime, 'YYYY-MM') = '2015-06';
解释:以上语句就是查询查2015年06月份的所有数据记录。
1、创建测试表,
create table test_date_2(id int, v_date date);
2、插入测试数据
insert into test_date_2 values(1,sysdate);
insert into test_date_2 values(2,sysdate-20);
insert into test_date_2 values(3,sysdate-30);
insert into test_date_2 values(4,sysdate-40);
commit;
3、查询表中全量数据,select t from test_date_2 t;
4、编写语句,查询当月份的上一个月;
select t, add_months(v_date,-1) v_date2 from test_date_2 t;
以上就是关于oracle select的结果,没有的月份qty中补0全部的内容,包括:oracle select的结果,没有的月份qty中补0、oracle判断连续几个月为0的最大间隔时间、oracle如何取出包含月份的记录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)