1010101010018 需求量 0 2008-8-6
1010101010018 需求量 12 2008-8-7
1010101010018 需求量 0 2008-8-15
1010101010018 需求量 60 2008-8-19
1010101010018 采购订单 10 2008-8-6
1010101010018 采购订单 10 2008-8-8
1010101010018 采购订单 30 2008-8-17
1010101010018 采购申请 2 2008-8-6
1010101010018 采购申请 50 2008-8-11
1010101010018 采购申请 50 2008-8-20
上表是原始数据,想求一段代码得出如下结果:
1010101010018 需求量 0 2008-8-6
1010101010018 需求量 12 2008-8-13
1010101010018 需求量 60 2008-8-20
1010101010018 采购订单 10 2008-8-6
1010101010018 采购订单 10 2008-8-13
1010101010018 采购订单 30 2008-8-20
1010101010018 采购申请 2 2008-8-6
1010101010018 采购申请 50 2008-8-13
1010101010018 采购申请 50 2008-8-20
请大侠们给予帮助!定感激不进啊!
------解决方案--------------------
除了少了1010101010018 需求量 0 2008-8-15
没看出什么差别嘛
------解决方案--------------------
就是每周三显示,上周四到这周三的库存吗(这7天内有重复记录的取最后日期的数据)?
------解决方案--------------------
lz应该把示例数据改一下,以便可以说得清楚一点。
------解决方案--------------------
看不出来有什么规律..
同意3楼
------解决方案--------------------
如果lz的数据,上周四到这周三的库存至多有一天不是0,则可以用下边的sql实现,否则需要修改一下。
- SQL code
create table testT (a char(13),b char(10),c number,d date)insert into testT values('1010101010018', '需求量', 0 , to_date('2008-8-6','YYYY-MM-DD'));insert into testT values('1010101010018', '需求量', 12 , to_date('2008-8-7','YYYY-MM-DD'));insert into testT values('1010101010018', '需求量', 0 , to_date('2008-8-15','YYYY-MM-DD'));insert into testT values('1010101010018', '需求量', 60 , to_date('2008-8-19','YYYY-MM-DD'));insert into testT values('1010101010018', '采购订单', 10 , to_date('2008-8-6','YYYY-MM-DD'));insert into testT values('1010101010018', '采购订单', 10 , to_date('2008-8-8','YYYY-MM-DD'));insert into testT values('1010101010018', '采购订单', 30 , to_date('2008-8-17','YYYY-MM-DD'));insert into testT values('1010101010018', '采购申请', 2 , to_date('2008-8-6','YYYY-MM-DD'));insert into testT values('1010101010018', '采购申请', 50 , to_date('2008-8-11','YYYY-MM-DD'));insert into testT values('1010101010018', '采购申请', 50 , to_date('2008-8-20','YYYY-MM-DD'));SELECT a, b, sum(c), DECODE (SIGN (7 - (NEXT_DAY (d, '星期三') - d)), 1, TO_CHAR (NEXT_DAY (d, '星期三'), 'YYYY-MM-DD'), TO_CHAR (d, 'YYYY-MM-DD') ) FROM testtGROUP BY a, b, DECODE (SIGN (7 - (NEXT_DAY (d, '星期三') - d)), 1, TO_CHAR (NEXT_DAY (d, '星期三'), 'YYYY-MM-DD'), TO_CHAR (d, 'YYYY-MM-DD') );--结果:1010101010018 采购订单 10 2008-8-61010101010018 采购订单 10 2008-8-131010101010018 采购订单 30 2008-8-201010101010018 采购申请 2 2008-8-61010101010018 采购申请 50 2008-8-131010101010018 采购申请 50 2008-8-20 1010101010018 需求量 0 2008-8-61010101010018 需求量 12 2008-8-131010101010018 需求量 60 2008-8-20
------解决方案--------------------
估计你这个问题只能用存储过程或函数来解决了..
一个sql好象搞不定..
------解决方案--------------------
- SQL code
方法如下:DROP TABLE test;create table test (a char(13),b char(10),c number,d date);insert into test values('1010101010018', '需求量', 0 , to_date('2008-8-6','YYYY-MM-DD'));insert into test values('1010101010018', '需求量', 12 , to_date('2008-8-7','YYYY-MM-DD'));insert into test values('1010101010018', '需求量', 0 , to_date('2008-8-15','YYYY-MM-DD'));insert into test values('1010101010018', '需求量', 60 , to_date('2008-8-19','YYYY-MM-DD'));insert into test values('1010101010018', '采购订单', 10 , to_date('2008-8-6','YYYY-MM-DD'));insert into test values('1010101010018', '采购订单', 10 , to_date('2008-8-8','YYYY-MM-DD'));insert into test values('1010101010018', '采购订单', 30 , to_date('2008-8-17','YYYY-MM-DD'));insert into test values('1010101010018', '采购申请', 2 , to_date('2008-8-6','YYYY-MM-DD'));insert into test values('1010101010018', '采购申请', 50 , to_date('2008-8-11','YYYY-MM-DD'));insert into test values('1010101010018', '采购申请', 50 , to_date('2008-8-20','YYYY-MM-DD'));COMMIT; SELECT A, B, SUM(C), DECODE(MOD(TRUNC(D) - TRUNC(SYSDATE), 7), 0, D, TRUNC(SYSDATE) + 7 * (CEIL((TRUNC(D) - TRUNC(SYSDATE)) / 7))) X FROM TEST GROUP BY A, B, DECODE(MOD(TRUNC(D) - TRUNC(SYSDATE), 7), 0, D, TRUNC(SYSDATE) + 7 * (CEIL((TRUNC(D) - TRUNC(SYSDATE)) / 7))) ORDER BY 1, 2, 4, 3; 输出:1010101010018 采购订单 10 2008-08-061010101010018 采购订单 10 2008-08-131010101010018 采购订单 30 2008-08-201010101010018 采购申请 2 2008-08-061010101010018 采购申请 50 2008-08-131010101010018 采购申请 50 2008-08-201010101010018 需求量 0 2008-08-061010101010018 需求量 12 2008-08-131010101010018 需求量 60 2008-08-20