根据型号年末月份拆分多条记录
问题描述:
我有一条记录,我希望根据月份进行拆分。 当我正在做拆分时,我试图按原样复制所有数据,但只是有意增量地更改FromMonth字段。根据型号年末月份拆分多条记录
对于离,
Record to be split:
c1 c2 c3 c4 FromMonth ToMonth Y
---------------------------------------
AA BB CC DD Feb Dec 2013
Resultant Records:
1.)
c1 c2 c3 c4 FromMonth ToMonth Y
---------------------------------------
AA BB CC DD Mar Dec 2013
2.)
c1 c2 c3 c4 FromMonth ToMonth Y
---------------------------------------
AA BB CC DD Apr Dec 2013
3.)
c1 c2 c3 c4 FromMonth ToMonth Y
---------------------------------------
AA BB CC DD May Dec 2013
.
.
.
.
任何建议或方法去将是有益的。
这里是香港专业教育学院做了什么,即时通讯新的,我只是学习:
DECLARE @FromMonth Int;
DECLARE @ToMonth Int;
DECLARE @Result int;
DECLARE @C1 int;
DECLARE @C2 int;
DECLARE @C3 int;
DECLARE @C4 decimal(20,8);
DECLARE @C5 uniqueidentifier;
DECLARE @C6 varchar(1000);
DECLARE @C7 int;
DECLARE @C8 int;
DECLARE @C9 int;
DECLARE @C10 bit;
DECLARE @C11 date;
DECLARE @C12 date;
set @FromMonth = (select FromMonth from master..t where t.c1=1);
set @ToMonth = (select ToMonth from master.t where t.c1=1);
set @[email protected] - @FromMonth;
while(@Result!=0)
begin
set @FromMonth = @FromMonth+1
insert into master..t(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,FromMonth,ToMonth)
values(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,@FromMonth,ToMonth);
set @Result = @Result -1;
break;
end;
感谢,
答
我猜你需要生成“FM”到“以旧换新”月行,试试这个:
DECLARE @t TABLE (c1 VARCHAR(10),c2 VARCHAR(10),c3 VARCHAR(10),c4 VARCHAR(10),FM VARCHAR(10),TM VARCHAR(10),Y VARCHAR(10))
INSERT @t VALUES
('AA', 'BB', 'CC', 'DD', '02', '12', '13')
SELECT a.c1
, a.c2
, a.c3
, a.c4
, number FM
, a.TM
, a.Y
FROM @t a
JOIN master..spt_values b ON
type = 'P'
AND number > CAST(a.FM AS INT) AND number <= CAST(a.TM AS INT)
本示例根据在单行中找到的数据生成新行。它复制除FM
字段以外的所有字段,此字段的值为spt_values.number
。表master..spt_values
用于生成新行。
例如:
SELECT number
FROM master..spt_values b
WHERE type = 'P'
将生成序号从0到2047加入该表被写入,使得它产生TM
- FM
的行数为3至12。
UPDATE
SELECT
语句的结果可以插入到一个表中,条件是表中的数字和字段的类型,结果是一样的。 INSERT
语句可以采取值从执行SELECT
语句插入:
INSERT @t
SELECT a.c1
, a.c2
, a.c3
, a.c4
, number FM
, a.TM
, a.Y
FROM @t a
JOIN master..spt_values b ON
type = 'P'
AND number > CAST(a.FM AS INT) AND number <= CAST(a.TM AS INT)
很抱歉,但我真的完全不知道你在说什么......什么是“年款月”?我看不到'12'的'TM'值被分成'03'和'04' – freefaller 2013-02-12 08:32:51
+1之间的任何关系,完全不知道你想要做什么。 – dstronczak 2013-02-12 08:40:47
@ freefaller,@ dstronczak,抱歉没有具体说明,我所要做的就是复制数据行(多个插入),将FM值一直增加到TM值。 – gaganHR 2013-02-12 12:10:29