没看懂你的意思
你的原表的值是不是固定的值即(b1,b2,...,bn)
现在你需要把字段名改为这些固定的值(b1,b2,...,bn)
而新表(b1,b2,...,bn)的值只是对应字段是否在num纪录中存在,是不是这个意思??
你的原表的值是不是固定的值即(b1,b2,...,bn)
现在你需要把字段名改为这些固定的值(b1,b2,...,bn)
而新表(b1,b2,...,bn)的值只是对应字段是否在num纪录中存在,是不是这个意思??
我的意思是:把源表中的所有值(重复的只看成一个,保证字段不重复)改成字段,然后相同的值对号入座。也就是说数值B1变成一个字段,所有值为B1的都列进B1这一列里。
把不明的地方说说吧,很急阿我
源表:
num a1 a2 a3 a4 a5
1 b1 b3 b9 b5 b8
2 b7 b3 b2 b6 b8
3 b4 b2 b8 b5 b6
.
.
.
求出b1、b2……在源表中所有(主要是这两个字)字段出现的次数和所在行(num)。
上面的方法是我想出来的笨方法
create table #table1 (num int,a1 varchar(10),a2 varchar(10),a3 varchar(10),a4 varchar(10),a5 varchar(10))
insert into #table1 VALUES ('0','b1','b3','b9','b4','b8')
insert into #table1 VALUES ('1','b8','b4','b3','b1','b9')
insert into #table1 VALUES ('2','b2','b3','b5','b7','b10')
insert into #table1 VALUES ('3','b1','b3','b4','b6','b7')
insert into #table1 VALUES ('4','b2','b3','b5','b8','b10')create table #table2 (num int,b1 varchar(10),b2 varchar(10),b3 varchar(10),b4 varchar(10),b5 varchar(10),b6 varchar(10),b7 varchar(10),b8 varchar(10),b9 varchar(10),b10 varchar(10))select b,sum([count]) as [count] from
(
select a1 as b,count(*) as [count] from #table1 group by a1
union
select a2 as b,count(*) as [count] from #table1 group by a2
union
select a3 as b,count(*) as [count] from #table1 group by a3
union
select a4 as b,count(*) as [count] from #table1 group by a4
union
select a5 as b,count(*) as [count] from #table1 group by a5
) as #table3
group by b
order by bdrop table #table1
drop table #table2-----------------------------------------------
b count
b1 3
b10 2
b2 2
b3 5
b4 1
b5 2
b6 1
b7 1
b8 1
b9 1
正在试
select b,num from
(
select num,a1 as b from #table1
union
select num,a2 as b from #table1
union
select num,a3 as b from #table1
union
select num,a4 as b from #table1
union
select num,a5 as b from #table1
) as #table5
order by b
你的a1,a2,a3...字段还有b2,b3,b4...字段我觉得应该对它们进行编码做成二个码表,虽然不了解你真的应用,但我觉得的应该是这样的.
num这个字段也是对应一个其它表的主键吧这样就可以形成一个新的关系表
num a b
每个字段都可重复,这三个字段做联合主键.
Locate(a1,'b1')+Locate(a2,'b1')+Locate(a3,'b1')+Locate(a4,'b1')+Locate(a5,'b1') as b1_count,
Locate(a1,'b2')+Locate(a2,'b2')+Locate(a3,'b2')+Locate(a4,'b2')+Locate(a5,'b2') as b2_count
from your_table_name;