表结构是这样的
TABLE_A:
AR1, AR2, AR3 … AR12 (一共12个,代表12个月)TABLE_B
B_N, B_MONTH, B_VALUE (一共3个,)
TABLE_C
AR1, AR2, AR3 … AR12 (一共12个,和TABLE_A结构一样)想把TABLE_A备份到TABLE_C中
条件如下:①取出 TABLE_A 中最大的值和TABLE_B的B_VALUE相乘②
如果TABLE_B的B_N =1
那么备份时月份排列如下
AR1 AR2 AR3 AR4 AR5 … AR12
4月 5月 6月 7月 8月 第二年3月如果TABLE_B的B_N =2
AR1 AR2 AR3 AR4 AR5 … AR12
10月 11月 12月 第二年1月 2月 9月③根据B_MONTH的值(月份),结合上面的月数分布,把①取得值,放入TABLE_C
相应列中。比如B_MONTH是5月,B_N=1
那么①取得值放入TABLE_C的AR2这列中。哎...
TABLE_A:
AR1, AR2, AR3 … AR12 (一共12个,代表12个月)TABLE_B
B_N, B_MONTH, B_VALUE (一共3个,)
TABLE_C
AR1, AR2, AR3 … AR12 (一共12个,和TABLE_A结构一样)想把TABLE_A备份到TABLE_C中
条件如下:①取出 TABLE_A 中最大的值和TABLE_B的B_VALUE相乘②
如果TABLE_B的B_N =1
那么备份时月份排列如下
AR1 AR2 AR3 AR4 AR5 … AR12
4月 5月 6月 7月 8月 第二年3月如果TABLE_B的B_N =2
AR1 AR2 AR3 AR4 AR5 … AR12
10月 11月 12月 第二年1月 2月 9月③根据B_MONTH的值(月份),结合上面的月数分布,把①取得值,放入TABLE_C
相应列中。比如B_MONTH是5月,B_N=1
那么①取得值放入TABLE_C的AR2这列中。哎...
①取出 TABLE_A 中最大的值和TABLE_B的B_VALUE相乘
1.此最大值是纵向比还是横向比,如果是纵向比则以哪一列来比
2.TABLE_B是否只有一行,如果不止一行你要取哪一行的值来相乘
...
TABLE_A:
id, AR1, AR2, AR3 … AR12 (一共13个字段,AR1-AR12代表12个月的销售额)TABLE_B:
id, B_N, B_MONTH, B_VALUE (一共4个字段,B_N:指定标示
B_MONTH :指定月份
B_VALUE :指定百分比)TABLE_A 和TABLE_B以id关连。
比如下这条记录:
TABLE_A: TABLE_B:
id, AR1, AR2, AR3 … AR12 id, B_N, B_MONTH, B_VALUE
1 100 200 300 1200 1 1 12 30%①取出 TABLE_A 中最大的值和TABLE_B的B_VALUE相乘: 1200*30%②
如果TABLE_B的B_N =1
那么备份时月份排列如下
AR1 AR2 AR3 AR4 AR5 … AR12
4月 5月 6月 7月 8月 第二年3月如果TABLE_B的B_N =2
AR1 AR2 AR3 AR4 AR5 … AR12
10月 11月 12月 第二年1月 2月 9月③根据B_MONTH的值(月份),结合上面的月数分布,把①取得值,放入TABLE_C
相应列中。比如上面那条记录:
如果B_MONTH是1月,B_N=2,那么1200*30%这个值就要放到 TABLE_C 的 AR4 这列中。不知道说没说清楚
@i1 int,
@i2 int)
RETURNS int
BEGIN
IF @i1>@i2
RETURN @i1
ELSE
RETURN @i2
END
GODECLARE tb_cursor CURSOR
FOR SELECT id,B_N,B_MONTH,colmax(colmax(colmax(colmax(colmax(colmax(colmax(colmax(colmax(colmax(colmax(ar1,ar2),ar3),ar4),ar5),ar6),ar7),ar8),ar9),ar10),ar11),ar12) * B_VALUE as maxar
FROM TABLE_A,TABLE_B
WHERE TABLE_A.ID=TABLE_B.IDDECLARE @id int
DECLARE @N int
DECLARE @month int
DECLARE @maxar int
DECLARE @sql varchar(255)OPEN tb_cursor FETCH NEXT FROM tb_cursor
INTO @id, @N, @month, @maxarIF @@FETCH_STATUS <> 0
PRINT ' <<None>>' WHILE @@FETCH_STATUS = 0
BEGIN SET @sql = "UPDATE TABLE_C SET AR" +
Convert(varchar(2),
CASE
WHEN @N=1 THEN (B_MONTH+8)%12 +1
WHEN @N=2 THEN (B_MONTH+2)%12 +1
END)
+ " = " + @maxar + " WHERE ID =" +@id;
EXEC @sql
FETCH NEXT FROM tb_cursor INTO @id, @N, @monthENDCLOSE tb_cursor
DEALLOCATE tb_cursor
id, AR1, AR2, AR3 … AR12 (一共13个字段,AR1-AR12代表12个月的销售额)TABLE_B:
id, B_N, B_MONTH, B_VALUE (一共4个字段,B_N:指定标示
B_MONTH :指定月份
B_VALUE :指定百分比)TABLE_C
id, AR1, AR2, AR3 … AR12 (一共13个,和TABLE_A结构一样)想把 TABLE_A 备份到 TABLE_C 中条件如下:TABLE_A 和TABLE_B以id关连。
比如像下面这条记录:
TABLE_A: TABLE_B:
id, AR1, AR2, AR3 … AR12 id, B_N, B_MONTH, B_VALUE
1 100 200 300 1200 1 2 1月 30%①取出 TABLE_A 中最大的值和TABLE_B的B_VALUE相乘: 1200*30%②
如果TABLE_B的B_N =1
那么备份时月份排列如下
AR1 AR2 AR3 AR4 AR5 … AR12
4月 5月 6月 7月 8月 第二年3月如果TABLE_B的B_N =2
AR1 AR2 AR3 AR4 AR5 … AR12
10月 11月 12月 第二年1月 2月 9月③根据B_MONTH的值(月份),结合上面的月数分布,把①取得值,放入TABLE_C
相应列中。比如上面那条记录:
B_MONTH是1月,B_N=2,那么1200*30%这个值就要放到 TABLE_C 的 AR4 这列中。