请教,如何把aa表分解成aa1表?

自由的风范 2013-11-05 12:35:24
各位老师,俺想把以下aa表以整年日期期限表示的表格,分解成aa1按月份表示的表格,请各位老师指导、赐教,感谢。

CLOSE ALL

clear

Create Table aa (cname c (12),date1 D,date2 D,rate n(8,2))
INSERT INTO aa VALUES ("dd1",{^2013-06-15},{^2014-06-14},1500 )
INSERT INTO aa VALUES ("dd2",{^2013-08-25},{^2014-08-24},1600 )
INSERT INTO aa VALUES ("dd3",{^2013-09-01},{^2014-08-31},1700 )

use aa
brow


Create Table aa1 (cname c (12),date1 D,date2 D,rate n(8,2))
INSERT INTO aa1 VALUES ("dd1",{^2013-06-15},{^2013-07-14},1500 )
INSERT INTO aa1 VALUES ("dd1",{^2013-08-15},{^2013-09-14},1500 )
INSERT INTO aa1 VALUES ("dd1",{^2013-09-15},{^2013-10-14},1500 )
INSERT INTO aa1 VALUES ("dd1",{^2013-10-15},{^2013-11-14},1500 )
INSERT INTO aa1 VALUES ("dd1",{^2013-11-15},{^2013-12-14},1500 )
INSERT INTO aa1 VALUES ("dd1",{^2013-12-15},{^2014-01-14},1500 )
INSERT INTO aa1 VALUES ("dd1",{^2014-01-15},{^2014-02-14},1500 )
INSERT INTO aa1 VALUES ("dd1",{^2014-02-15},{^2014-03-14},1500 )
INSERT INTO aa1 VALUES ("dd1",{^2014-03-15},{^2014-04-14},1500 )
INSERT INTO aa1 VALUES ("dd1",{^2014-04-15},{^2014-05-14},1500 )
INSERT INTO aa1 VALUES ("dd1",{^2014-05-15},{^2014-06-14},1500 )

INSERT INTO aa1 VALUES ("dd2",{^2013-08-25},{^2013-09-24},1600 )
INSERT INTO aa1 VALUES ("dd2",{^2013-09-25},{^2013-10-24},1600 )
INSERT INTO aa1 VALUES ("dd2",{^2013-10-25},{^2013-11-24},1600 )
INSERT INTO aa1 VALUES ("dd2",{^2013-11-25},{^2013-12-24},1600 )
INSERT INTO aa1 VALUES ("dd2",{^2013-12-25},{^2014-01-24},1600 )
INSERT INTO aa1 VALUES ("dd2",{^2014-01-25},{^2014-02-24},1600 )
INSERT INTO aa1 VALUES ("dd2",{^2014-02-25},{^2014-03-24},1600 )
INSERT INTO aa1 VALUES ("dd2",{^2014-03-25},{^2014-04-24},1600 )
INSERT INTO aa1 VALUES ("dd2",{^2014-04-25},{^2014-05-24},1600 )
INSERT INTO aa1 VALUES ("dd2",{^2014-05-25},{^2014-06-24},1600 )
INSERT INTO aa1 VALUES ("dd2",{^2014-06-25},{^2014-07-24},1600 )
INSERT INTO aa1 VALUES ("dd2",{^2014-07-25},{^2014-08-24},1600 )

INSERT INTO aa1 VALUES ("dd3",{^2013-09-01},{^2013-09-30},1700 )
INSERT INTO aa1 VALUES ("dd3",{^2013-10-01},{^2013-10-31},1700 )
INSERT INTO aa1 VALUES ("dd3",{^2013-11-01},{^2013-11-30},1700 )
INSERT INTO aa1 VALUES ("dd3",{^2013-12-01},{^2013-12-31},1700 )
INSERT INTO aa1 VALUES ("dd3",{^2014-01-01},{^2014-01-31},1700 )
INSERT INTO aa1 VALUES ("dd3",{^2014-02-01},{^2014-02-28},1700 )
INSERT INTO aa1 VALUES ("dd3",{^2014-03-01},{^2014-03-31},1700 )
INSERT INTO aa1 VALUES ("dd3",{^2014-04-01},{^2014-04-30},1700 )
INSERT INTO aa1 VALUES ("dd3",{^2014-05-01},{^2014-05-31},1700 )
INSERT INTO aa1 VALUES ("dd3",{^2014-06-01},{^2014-06-30},1700 )
INSERT INTO aa1 VALUES ("dd3",{^2014-07-01},{^2014-07-31},1700 )
INSERT INTO aa1 VALUES ("dd3",{^2014-08-01},{^2014-08-31},1700 )

use aa1
brow


CLOSE ALL
CLEAR

...全文
335 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
自由的风范 2013-11-07
  • 打赏
  • 举报
回复
结贴了,再次感谢WWWWA老师和lc_apple老师的悉心指导和帮助。
自由的风范 2013-11-06
  • 打赏
  • 举报
回复
lc_apple老师:您好,六楼的代码运行很好,达到目的,感谢您的指导。日期的问题,确实不好弄,请您多多赐教。
自由的风范 2013-11-06
  • 打赏
  • 举报
回复
WWWWA老师:您好,5楼的代码运行正常,达到效果,感谢您的指导,也请您以后继续多指教。
WWWWA 2013-11-05
  • 打赏
  • 举报
回复
自己修改一下不就行了 SELECT A.CNAME,; IIF(b.id=1,a.date1,GOMONTH(A.DATE1,B.ID-1)) as newdate1,; IIF(A.PM=B.ID,A.DATE2,GOMONTH(A.DATE1,B.ID)-1) AS ADATE2; ,rate FROM SS A INNER JOIN LSB B ON A.PM>=B.ID
自由的风范 2013-11-05
  • 打赏
  • 举报
回复
WWWWA老师:您好,感谢您的指导。运行三楼代码,结果是如下,有些问题。俺希望的结果是:第一行的date2应该是2013-7-14,第二行date1应该是2013-7-15、date2应该是2013-8-14,第三行date1应该是2013-8-15、date2应该是2013-9-14,如此类推,请您再指导调整,感谢。 cname date1 adate2 rate dd1 2013-6-15 2013-7-15 1500 dd1 2013-6-15 2013-8-15 1500 dd1 2013-6-15 2013-9-15 1500 dd1 2013-6-15 2013-10-15 1500 dd1 2013-6-15 2013-11-15 1500 dd1 2013-6-15 2013-12-15 1500 dd1 2013-6-15 2014-1-15 1500 dd1 2013-6-15 2014-2-15 1500 dd1 2013-6-15 2014-3-15 1500 dd1 2013-6-15 2014-4-15 1500 dd1 2013-6-15 2014-5-15 1500 dd1 2013-6-15 2014-6-14 1500 dd2 2013-8-25 2013-9-25 1600 dd2 2013-8-25 2013-10-25 1600 dd2 2013-8-25 2013-11-25 1600 dd2 2013-8-25 2013-12-25 1600 dd2 2013-8-25 2014-1-25 1600 dd2 2013-8-25 2014-2-25 1600 dd2 2013-8-25 2014-3-25 1600 dd2 2013-8-25 2014-4-25 1600 dd2 2013-8-25 2014-5-25 1600 dd2 2013-8-25 2014-6-25 1600 dd2 2013-8-25 2014-7-25 1600 dd2 2013-8-25 2014-8-24 1600 dd3 2013-9-1 2013-10-1 1700 dd3 2013-9-1 2013-11-1 1700 dd3 2013-9-1 2013-12-1 1700 dd3 2013-9-1 2014-1-1 1700 dd3 2013-9-1 2014-2-1 1700 dd3 2013-9-1 2014-3-1 1700 dd3 2013-9-1 2014-4-1 1700 dd3 2013-9-1 2014-5-1 1700 dd3 2013-9-1 2014-6-1 1700 dd3 2013-9-1 2014-7-1 1700 dd3 2013-9-1 2014-8-1 1700 dd3 2013-9-1 2014-8-31 1700 dd1 2013-6-15 2013-7-14 1500 dd1 2013-8-15 2013-9-14 1500 dd1 2013-9-15 2013-10-14 1500 dd1 2013-10-15 2013-11-14 1500 dd1 2013-11-15 2013-12-14 1500 dd1 2013-12-15 2014-1-14 1500 dd1 2014-1-15 2014-2-14 1500 dd1 2014-2-15 2014-3-14 1500 dd1 2014-3-15 2014-4-14 1500 dd1 2014-4-15 2014-5-14 1500 dd1 2014-5-15 2014-6-14 1500 dd2 2013-8-25 2013-9-24 1600 dd2 2013-9-25 2013-10-24 1600 dd2 2013-10-25 2013-11-24 1600 dd2 2013-11-25 2013-12-24 1600 dd2 2013-12-25 2014-1-24 1600 dd2 2014-1-25 2014-2-24 1600 dd2 2014-2-25 2014-3-24 1600 dd2 2014-3-25 2014-4-24 1600 dd2 2014-4-25 2014-5-24 1600 dd2 2014-5-25 2014-6-24 1600 dd2 2014-6-25 2014-7-24 1600 dd2 2014-7-25 2014-8-24 1600 dd3 2013-9-1 2013-9-30 1700 dd3 2013-10-1 2013-10-31 1700 dd3 2013-11-1 2013-11-30 1700 dd3 2013-12-1 2013-12-31 1700 dd3 2014-1-1 2014-1-31 1700 dd3 2014-2-1 2014-2-28 1700 dd3 2014-3-1 2014-3-31 1700 dd3 2014-4-1 2014-4-30 1700 dd3 2014-5-1 2014-5-31 1700 dd3 2014-6-1 2014-6-30 1700 dd3 2014-7-1 2014-7-31 1700 dd3 2014-8-1 2014-8-31 1700
WWWWA 2013-11-05
  • 打赏
  • 举报
回复
示例:
Create CURS aa (cname c (12),date1 D,date2 D,rate n(8,2))
INSERT INTO aa VALUES ("dd1",{^2013-06-15},{^2014-06-14},1500 )
INSERT INTO aa VALUES ("dd2",{^2013-08-25},{^2014-08-24},1600 )
INSERT INTO aa VALUES ("dd3",{^2013-09-01},{^2014-08-31},1700 )
SELECT *,INT((DATE2-DATE1)/30) AS PM FROM AA INTO CURSOR SS
Create CURS LSB (ID N (3))
FOR I=1 TO 100
INSERT INTO LSB VALUE(I)
ENDF
SELECT A.CNAME,A.DATE1,IIF(A.PM=B.ID,A.DATE2,GOMONTH(A.DATE1,B.ID)) AS ADATE2,rate FROM SS A INNER JOIN LSB B ON A.PM>=B.ID
自由的风范 2013-11-05
  • 打赏
  • 举报
回复
lc_apple老师:您好,俺又遇上日期的问题了,请您指教,感谢。
lc_apple 2013-11-05
  • 打赏
  • 举报
回复
你咋又和日期型数据抗上了
lc_apple 2013-11-05
  • 打赏
  • 举报
回复
Close Data Create Table aa (cname c (12),date1 D,date2 D,rate N(8,2)) Insert Into aa Values ("dd1",{^2013-06-15},{^2014-06-14},1500 ) Insert Into aa Values ("dd2",{^2013-08-25},{^2014-08-24},1600 ) Insert Into aa Values ("dd3",{^2013-09-01},{^2014-08-31},1700 ) Create Table aa1 (cname c (12),date1 D,date2 D,rate N(8,2)) Select aa Scan Scatter Memv Do While m.date1<m.date2 If Gomonth(m.date1,1)<m.date2 Insert Into aa1 Values (m.cname,m.date1,Gomonth(m.date1,1)-1,m.rate ) Else Insert Into aa1 Values (m.cname,m.date1,m.date2,m.rate ) Endif m.date1=Gomonth(m.date1,1) Enddo Endscan

2,748

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧