是这样子的
下达1条任务,这个任务可以下给多个区县。总数是指的要做的商品总数。当时没有要求按地区分各自的数量。那个PM就偷懒,将地区记录在一个字段里面用逗号分开,取的时候用SPLIT取现在要求记录各个区的数量了···头大 我也觉得原来设计的不科学··
下达1条任务,这个任务可以下给多个区县。总数是指的要做的商品总数。当时没有要求按地区分各自的数量。那个PM就偷懒,将地区记录在一个字段里面用逗号分开,取的时候用SPLIT取现在要求记录各个区的数量了···头大 我也觉得原来设计的不科学··
任务ID(主键) 任务名称 总数
500001 1号任务 21B表ID(主键) 任务ID 地区 数量
1 500001 A 10
2 500001 B 10
3 500001 C 1这样可以不 请高手们指教··
PS A表不仅仅这几个字段 还有N多
我如果这样改数据库结构 程序要改死我的··关键是还有报表是根据这个来统计的··
哭了 高手们求教
@s varchar(8000), --包含多个数据项的字符串
@pos int, --要获取的数据项的位置
@split varchar(10) --数据分隔符
)RETURNS varchar(100)
AS
BEGIN
IF @s IS NULL RETURN(NULL)
DECLARE @splitlen int --分隔符长度
SELECT @splitlen=LEN(@split+'a')-2
WHILE @pos>1 AND charindex(@split,@s+@split)>0
SELECT @pos=@pos-1,
@s=stuff(@s,1,charindex(@split,@s+@split)+@splitlen,'')
RETURN(nullif(left(@s,charindex(@split,@s+@split)-1),''))
END
GOcreate table ta(总数 int, 地区 varchar(10), 数量 varchar(30))
insert ta select
21 ,'A,B,C', '10,10,1 'goselect *
from (select dbo.F_split(地区,1,',') as 地区,dbo.F_split(数量,1,',') as 数量 from ta union all
select dbo.F_split(地区,2,',') as 地区,dbo.F_split(数量,2,',') as 数量 from ta union all
select dbo.F_split(地区,3,',') as 地区,dbo.F_split(数量,3,',') as 数量 from ta
) a
where 地区 = 'A'
/*地区 数量
------ -----
A 10(所影响的行数为 1 行)*/
drop table ta
drop function F_split