Allocation_Tab 表中
有一个字段为 Number_Of_Container (int 4),如果发现某条记录的该字段的值为n>1时就将该条记录复制 n-1次,并将新由复制产生的n-1条记录中的 Number_Of_Container字段的内容设为0, 但保留最初记录中 Number_Of_Container
字段中的值不变。
有一个字段为 Number_Of_Container (int 4),如果发现某条记录的该字段的值为n>1时就将该条记录复制 n-1次,并将新由复制产生的n-1条记录中的 Number_Of_Container字段的内容设为0, 但保留最初记录中 Number_Of_Container
字段中的值不变。
insert Allocation_Tab select 3
union all select 1
union all select 4declare @i int
select @i=max(Number_Of_Container) from Allocation_Tabset rowcount @i
select ID=identity(int, 1, 1) into #T from syscolumns, sysobjects
set rowcount 0select Number_Of_Container, Number_Of_Container from Allocation_Tab
union all
select Number_Of_Container, 0 from Allocation_Tab a, #T b
where a.Number_Of_Container>b.ID and a.Number_Of_Container>1
order by 1, 2--result
Number_Of_Container Number_Of_Container
------------------- -------------------
1 1
3 0
3 0
3 3
4 0
4 0
4 0
4 4(8 row(s) affected)
就没有问题,原因是我已存在Allocation_tab
但是运行的结果和我的要求不一样1> 当 allocation_tab 中没有记录时, 该语句组运行后的结果为。
ID Number_Of_Container
1 3
2 1
3 4
(根据要求,结果仍为空才对,因为没有发现有 number_of_container >1的情况)
虽然你打印出来的结果似呼是对的,但却不对)
2> 当 allocation_tab 中有一条记录 如:
ID Number_Of_Container
1 3
该语句组运行后的结果为。
ID Number_Of_Container
1 3
2 3
3 1
4 4
(这个结果我就更不对了)
正确结果应为
ID Number_Of_Container
1 3
2 0
3 0
根据你提供的语句运行后打印出的结果为Number_Of_Container Number_Of_Container
1 1
3 0
3 0
3 0
3 0
3 3
3 3
4 0
4 0
4 0
4 4
eg:
Allocation_Tab 表如下字段
ID Number_Of_Container PO Mark_OnOff
1 3 po_1 0
2 4 po_2 0希望处理后变成
ID Number_Of_Container PO Mark_OnOff (这个字段表示一个开关,处理后的数据下次跳过
1 3 po_1 1
2 4 po_2 1
3 0 po_1 1
4 0 po_1 1
5 0 po_2 1
6 0 po_2 1
7 0 po_2 1你会发现 po_1 被copy了两条+原来的一条刚好 数据刚好 = 最初的 Number_Of_Container "3"
同样
你会发现 po_3 被copy了3条+原来的一条刚好 数据刚好 = 最初的 Number_Of_Container "4"
并将所有的 开关 关上,下次不做处理不知这样是否清楚
你会发现 po_2 被copy了3条+原来的一条刚好 数据刚好 = 最初的 Number_Of_Container "4"
并将所有的 开关 关上,下次不做处理