编号 问题编号  问题答案 1  1  A 
2  2  B 
3  3  Bcd 
4  1  C 
5  2  B 
6  3  cde 
7  1  B 
8  2  B 
9  3  Cde 我想按照第3题的答案进行分组, :但现在是第1、2题是单选  第3题是多选  用普通的group by 语句实现的是
bcd 1
cde 2最后想实现的结果
现在想实现如果第2道题在选B情况下  再按第3题的答案进行分组 
想结果如下: b 1
             c 3
             d 3
             e 2

解决方案 »

  1.   

    ----------------------------------------------------------------
    -- Author  :SQL77(只为思齐老)
    -- Date    :2010-02-24 08:41:43
    -- Version:
    --      Microsoft SQL Server  2000 - 8.00.194 (Intel X86) 
    -- Aug  6 2000 00:57:48 
    -- Copyright (c) 1988-2000 Microsoft Corporation
    -- Desktop Engine on Windows NT 5.1 (Build 2600: Service Pack 3)
    --
    ----------------------------------------------------------------
    --> 测试数据:#TB
    if object_id('tempdb.dbo.#TB') is not null drop table #TB
    go 
    create table #TB([A] varchar(3),[B] int)
    insert #TB
    select 'bcd',1 union all
    select 'cde',2
    --------------开始查询--------------------------
    SELECT A,SUM(B)B FROM 
    (
    select LEFT(A,1)A,B from #TB
    UNION ALL
    select RIGHT(A,1),B from #TB
    UNION ALL
    select SUBSTRING(A,2,1),B from #TB
    )T GROUP BY A
    ----------------结果----------------------------
    /* (所影响的行数为 2 行)A    B           
    ---- ----------- 
    b    1
    c    3
    d    3
    e    2(所影响的行数为 4 行)
    */