SELECT
    CNTA=SUM(CASE COL1 WHEN 'A' THEN 1 ELSE 0 END),
    CNTB=SUM(CASE COL1 WHEN 'B' THEN 1 ELSE 0 END),
    CNTC=SUM(CASE COL1 WHEN 'C' THEN 1 ELSE 0 END)
FROM
    TAB

解决方案 »

  1.   

    示例如下:declare @tab table(col1 char(1))
    insert into @tab values('A')
    insert into @tab values('A')
    insert into @tab values('A')
    insert into @tab values('B')
    insert into @tab values('B')
    insert into @tab values('C')
    insert into @tab values('C')
    insert into @tab values('C')Select 
    (Select Count(1) From @tab Where Col1 = 'A') CNTA,
    (Select Count(1) From @tab Where Col1 = 'B') CNTB,
    (Select Count(1) From @tab Where Col1 = 'C') CNTC
      

  2.   

    select CNTA=(select count(1) from Tab where COL1='A'), 
           CNTB=(select count(1) from Tab where COL1='B'), 
           CNTC=(select count(1) from Tab where COL1='C')
      

  3.   

    declare @s varchar(8000)
    set @s = ''
    select @s = ','+'[cnt'+COL1+'] = sum(case col1 when '+col1+ ' then 1 else 0 end)'
    from (select distinct col1 from table order by col1)
    set @s = stuff(@s,1,1,'')
    exec('select distinct '+ @s + ' from table ')
      

  4.   

    如果COL1列下的值是不确定的,那就要用动态的SQL语句来实现了
      

  5.   

    create table tab (col1 char(1))
    insert into tab values('A')
    insert into tab values('A')
    insert into tab values('A')
    insert into tab values('B')
    insert into tab values('B')
    insert into tab values('C')
    insert into tab values('C')
    insert into tab values('C')
    go
    select distinct col1 from tab
    declare @s varchar(8000)
    set @s = ''
    select @s = @s+','+'[cnt'+COL1+'] = sum(case col1 when '''+col1+ ''' then 1 else 0 end)'
    from (select distinct col1 from tab ) a
    set @s = stuff(@s,1,1,'')exec('select distinct '+ @s + ' from tab ')drop table tab
    /*cntA        cntB        cntC        
    ----------- ----------- ----------- 
    3           2           3*/