日期:2014-05-18  浏览次数:20903 次

求A表到B表的转换SQL语句
如题,A表是月次表,表结构如下:
ID,     NAME,             MONTH,           CASEDAY1,         CASEDAY2,...CASEDAY31
001         name1             200710               case1                   case2                   case31
002         name2             200710               case1                   case2                   case31
B表是日次表,表结构如下:
ID,     NAME,             MONTHDAY,     CASE
001         name1             20071001         case1
001         name1             20071002         case2
...................................
001         name1             20071030         case30
002         name2             20071001         case1
002         name2             20071002         case2
...................................
002         name2             20071030         case30

我目前想到的方法是这样的
INSERT   INTO   B   SELECT   ID,NAME,MONTH+ '01 ',CASEDAY1   FROM   A

INSERT   INTO   B   SELECT   ID,NAME,MONTH+ '02 ',CASEDAY2   FROM   A

.......................................................
INSERT   INTO   B   SELECT   ID,NAME,MONTH+ '31 ',CASEDAY31   FROM   A
但我觉得效率不高,每次都要执行31条SQL语句才能完成转换,大家有更简单的方法吗?
谢谢




------解决方案--------------------
insert into b select
(
SELECT ID,NAME,MONTH+ '01 ',CASEDAY1 FROM A
union all
SELECT ID,NAME,MONTH+ '02 ',CASEDAY2 FROM A
......
union all
SELECT ID,NAME,MONTH+ '31 ',CASEDAY31 FROM A
) t

------解决方案--------------------
乌龟是个勤奋的人
------解决方案--------------------
厄~想打字少就存储过程吧
貌似没有什么好办法~