没看懂你的意思
你的原表的值是不是固定的值即(b1,b2,...,bn)
现在你需要把字段名改为这些固定的值(b1,b2,...,bn)
而新表(b1,b2,...,bn)的值只是对应字段是否在num纪录中存在,是不是这个意思??

解决方案 »

  1.   

    不好意思,我说的不清楚。
    我的意思是:把源表中的所有值(重复的只看成一个,保证字段不重复)改成字段,然后相同的值对号入座。也就是说数值B1变成一个字段,所有值为B1的都列进B1这一列里。
      

  2.   

    xuzuning(唠叨) 也来了,有什么不明白可以说出来,我解释。(如果单数据库语句解决不了,可用上程序。)
    把不明的地方说说吧,很急阿我
      

  3.   

    其实原题是这样子:
    源表:
    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)。
    上面的方法是我想出来的笨方法
      

  4.   

    晕前面的问题要麻烦多了,原题就简单多了。我的方法是:
    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
      

  5.   

    谢拉,终于成功了一半,还要按b1、b2、b3……分组输出每个值所在的num值
    正在试
      

  6.   

    呵呵,没看完题目,但用同样的方法就可以得到num值-----------------------------------------------所在行(num)
    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
      

  7.   

    求出b1、b2……在源表中所有(主要是这两个字)字段出现的次数和所在行(num),并按出现次数从大到小排
      

  8.   

    我觉得不是 sql语句的问题,主要问题还是出在你的表的设计上。
      

  9.   

    我感觉你数据结构组织的应该有问题吧
    你的a1,a2,a3...字段还有b2,b3,b4...字段我觉得应该对它们进行编码做成二个码表,虽然不了解你真的应用,但我觉得的应该是这样的.
    num这个字段也是对应一个其它表的主键吧这样就可以形成一个新的关系表
    num a b
    每个字段都可重复,这三个字段做联合主键.
      

  10.   

    简单的问题为什么要搞得这么复杂,一句话搞定:select num,
    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;