最近使用arcplan做报表,遇到不同日期粒度下展示数据的需求,利用sql直接从数据库中查询更为简便,且复用性强,记录下。
年粒度情况:展示当年前推5年的数据。
t.d_day>= add_months(to_date('2012'||'0101', 'yyyymmdd'),-60)
and t.d_day<= last_day(to_date('2012'||'1201', 'yyyymmdd'))
半年粒度情况:展示当前半年前推12个数据点。
d_day>=add_months(to_date(substr('2011H2', 1, 4)||decode(substr('2011H2', 6, 6),1,'0101',2,'0701'), 'yyyymmdd') ,-72)
and t3.d_day<=to_date(substr('2011H2', 1, 4)||decode(substr('2011H2', 6, 6),1,'0630',2,'1231'), 'yyyymmdd')
季粒度情况:展示当前季度前推12个数据点。
t.d_day>=add_months(to_date(substr('2012Q1', 1, 4)||decode(substr('2012Q1', 6, 6),1,'0101',2,'0401',3,'0701',4,'1001'), 'yyyymmdd') ,-36)
and t.d_day<=to_date(substr('2012Q1', 1, 4)||decode(substr('2012Q1', 6, 6),1,'0101',2,'0401',3,'0701',4,'1001'), 'yyyymmdd')
月粒度情况:展示当前年所在12个月的数据,不足12个月前推。
t.d_day<=last_day(to_date('201204
', 'yyyymm')) and t.d_day>add_months(last_day(to_date('201204', 'yyyymm')),-12)
旬粒度情况:展示当年季度前推12个点的数据。
t.d_day>= to_date(to_char(add_months(to_date(substr('201201X3', 1, 6), 'yyyymm'), -ceil(11 / 3) ), 'YYYYMM')||decode( to_char(
case when to_number(substr('201201X3', 8, 1)) - mod(11, 3) > 0 THEN to_number(substr('201201X3', 8, 1)) - mod(11, 3)
else to_number(substr('201201X3', 8, 1)) - mod(11, 3) + 3 END),1,'01',2,'11',3,'21'),'yyyymmdd')
and t.d_day<= decode(substr('201201X3', 8, 8),1,to_date(substr('201201X3', 1, 6)||'10','yyyymmdd'),2,to_date(substr('201201X3', 1, 6)||'20','yyyymmdd'),3,last_day(to_date(substr('201201X3', 1, 6)||'01','yyyymmdd')))
周粒度情况:展示当年周前12个数据点。
t.d_day<= trunc(to_date(substr('2011W53', 1, 4) || '01' || '01', 'yyyymmdd'), 'IW') + 7 * to_number(substr('2011W53', 6, 2)) - 1
and t.d_day> trunc(to_date(substr('2011W53', 1, 4) || '01' || '01', 'yyyymmdd'), 'IW') + 7 * to_number(substr('2011W53', 6, 2)) - 1 - 12 * 7
日粒度情况:展示当前月30天,不足30天前推30天。
t.d_day<=to_date('20120326
', 'yyyymmdd') and t.d_day>(to_date('20120326', 'yyyymmdd')-30)
分享到:
相关推荐
这意味着使用、复制、披露、修改和适应软件及其文档和技术数据将受到Oracle许可协议中的限制条件的约束。 #### 六、总结 **Oracle Secure Backup Installation Guide** 不仅是安装和配置Oracle Secure Backup的...
Oracle数据库自诞生以来,经历了多次重大版本更新,不断引入新的特性和功能以适应技术的发展和市场需求。以下是Oracle数据库各个关键版本的主要特点和改进: 1983年,OracleV3发布,这是首个支持PC、小型机和主机的...
她是Oracle ACE,也是OakTable(Oracle社区中著名的“Oracle科学家”的非正式组织)的成员,经常在技术会议上演讲。她的著作还包括 Expert Oracle Practices和Beginning Oracle SQL,博客主页是karenmorton....
Oracle提供了细粒度的权限控制,允许管理员分配不同的角色和权限给用户,以限制对数据的访问。理解用户、角色、权限的概念以及如何进行GRANT和REVOKE操作是安全管理的重要部分。 六、备份与恢复 数据的安全性离不开...
- **函数**:Oracle提供了丰富的内置函数,如数学函数、字符串函数、日期时间函数等,简化复杂计算和数据处理。 #### 八、数据库对象管理 - **数据库对象**:包括表、视图、索引、序列、同义词等,是构建数据库...
12. **权限和角色**:Oracle9i SQL提供了细粒度的权限管理,允许管理员分配不同级别的访问权限给不同的用户。角色是一组权限的集合,方便权限管理。 13. **PL/SQL**:PL/SQL是Oracle的编程语言,结合了SQL和过程...
4. **函数与操作符**:"oracle.10G函数大全.chm"部分详细介绍了Oracle提供的各种内置函数,如数学函数、字符串函数、日期时间函数,以及逻辑和比较操作符等,这些都是编写SQL查询时不可或缺的工具。 5. **PL/SQL**...
日期类型 date 7字节 用于存储表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日,7个字节分别表示世纪、年、月、日、时、分和秒 二进制数据类型 row 1~2000字节 可变长二进制数据,在具体...
- 为了确保数据的一致性,可以在FORM中实现对唯一性约束的检查。 **33. FORM更新多表视图** - 更新多表视图时需要注意事务管理以及数据一致性问题。 **34. Form使用数组作为形参** - 数组可以作为函数或过程的参数...
10.1 描述和使用SQL中的字符、数字和日期函数 348 10.1.1 定义函数 348 10.1.2 函数类型 348 10.1.3 使用大小写转换函数 349 10.1.4 使用字符操作函数 350 10.1.5 使用数字函数 353 10.1.6 使用日期 355 ...
在这个例子中,`TIME_ID`列作为分区键,根据日期的不同,将数据行映射到不同的分区中。例如,所有在2019年6月的数据行都会被映射到一个特定的分区,而2018年11月的数据行则会被映射到另一个分区。 --- #### 视图...
10.1 描述和使用SQL中的字符、数字和日期函数 348 10.1.1 定义函数 348 10.1.2 函数类型 348 10.1.3 使用大小写转换函数 349 10.1.4 使用字符操作函数 350 10.1.5 使用数字函数 353 10.1.6 使用日期 355 ...
在Oracle中,可以使用`CREATE TABLE`语句来定义新的表结构,包括指定列名、数据类型和约束条件。例如,`CREATE TABLE employees (id NUMBER PRIMARY KEY, name VARCHAR2(50), salary NUMBER);`创建了一个包含员工ID...
2. **Oracle 工具中**:除了在数据库内执行外,PL/SQL 还可以在多种 Oracle 开发工具中编写和测试,例如 SQL*Plus、PL/SQL Developer 等。 **三、PL/SQL 的优势** 1. **SQL 的支持**:PL/SQL 紧密集成了 SQL 语言...
与DTD相比,Schema支持复杂的数据类型,如浮点数、日期、时间等,并提供了命名空间支持,使得不同组织的XML文档可以共存而不会发生冲突。 2. **XML Schema组件** - **元素(Elements)**:XML文档的基本构建块,...