例如:数据库有如下字段:
用户名称 题目1 题目2 题目3 ...(后面类似)
a         A     B     A
b         B     B     A怎么样用语句实现对一个用户答题情况进行统计,比如说:a用户答题的总分,或者,a用户答案选择A的题目的个数。麻烦各位给解答一下,急用,谢谢了。

解决方案 »

  1.   

    select *
    from 用户表
    where 用户名称=‘a’
    order by 题目1+题目2+题目3是这样么?
      

  2.   

    create table tab([用户名称] varchar(10),[题目1] varchar(10),[题目2] varchar(10),[题目3] varchar(10))
    insert into tab([用户名称],[题目1],[题目2],[题目3])
    select 'a','A','B','A'
    union all 
    select 'b','B','B','A'declare @exec varchar(8000)
    set @exec=''
    select @exec=@exec+'[用户名称],'''+name+''' as [题目],'+name+' as [答案]  from tab union all select ' 
    from syscolumns 
    where id=object_id('tab') and name <>'用户名称'
    set @exec='select * into tt from (select '+left(@exec,len(@exec)-len('union all select '))+') tt order by [用户名称],[题目]'
    --print @execexec (@exec)select * from tab select * from ttselect [用户名称], sum(case when [答案] ='A' then 1 else 0 end ) as [A的个数] from tt group by [用户名称]
    /*
    表:tab 用户名称 题目1 题目2 题目3  
    ------- ----- ----- -----
    a        A     B     A
    b        B     B     A表:t用户名称 题目   答案
    ------  -----  ------
    a 题目1 A
    a 题目2 B
    a 题目3 A
    b 题目1 B
    b 题目2 B
    b 题目3 A结果:用户名称 A的个数
    ------- -------
    a 2
    b 1删除测试
    ------
    */
    drop table tab
    drop table tt