select count(distinct A) from B

解决方案 »

  1.   

    Select A,count(A) as 数字种数
    From B
    group by A
    order by A
      

  2.   

    select count(distinct A) as 数字种数 from B
      

  3.   

    --函数,pbsql(风云) 写的CREATE FUNCTION dbo.splitstring(@str varchar(4000),@c varchar(10))
    RETURNS @t table(s varchar(100))
    AS
    BEGIN
      DECLARE @s varchar(4000)
      SET @s=@str
      WHILE CHARINDEX(@c,@s)>0
      BEGIN
        INSERT INTO @t(s) VALUES(LEFT(@s,CHARINDEX(@c,@s)-1))
        SET @s=RIGHT(@s,LEN(@s)-CHARINDEX(@c,@s))
      END
      INSERT INTO @t(s) VALUES(@s)
      RETURN
    END
    GO--调用
    select count(distinct s) from dbo.splitstring('1,2,3,2,1,2,4,2,1',',')
      

  4.   

    declare @sql varchar(8000),@s varchar(100)
    set @s='1,2,3,4,5,3,4,2,0'
    set @sql='select count(distinct a) from (select ' +replace (@s,',','as a union all select ')+') a'
    exec(@sql)
      

  5.   

    select count(distinct A) as 不同的数量 from BSelect A,count(A) as 数量 from B group by A
      

  6.   

    --如果是每条记录统计一次,则写如下处理函数if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_split]') and xtype in (N'FN', N'IF', N'TF'))
    drop function [dbo].[f_split]
    GOif exists (select * from dbo.sysobjects where id = object_id(N'[序数表]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [序数表]
    GO--为了效率,所以要一个辅助表配合
    select top 8000 id=identity(int,1,1) into 序数表 
    from syscolumns a,syscolumns b
    alter table 序数表 add constraint pk_id_序数表 primary key(id)
    gocreate function f_split(
    @str varchar(8000), --要分拆的字符串
    @splitchar varchar(10) --分隔符
    )returns int
    as
    begin
    return(
    select count(distinct re) from(
    select re=substring(@str,id,charindex(@splitchar,@str+@splitchar,id)-id)
    from 序数表 
    where id<=len(@str)+1 and charindex(@splitchar,@splitchar+@str,id)-id=0
    )a
    )
    end
    go
      

  7.   

    --统计时这样调用:select A,计数=dbo.f_split(A) from B表
      

  8.   

    SELECT count(A) FROM (SELECT distinct A FROM B)呵呵,谢谢大家
    我觉得这样写没有问题晕阿,几位大哥有用dephi代码给我看的。
    呵呵,虽然不会,但能看懂
      

  9.   

    --如果是的话,那就真的晕到了,这样写就可以了(楼主自己的写法也是对的):
    select count(distinct A) from B
      

  10.   

    select count(distinct A) from B
    晕阿
    我在C#下用ACCESS
    这个通不过我自己那个没有问题晕
      

  11.   

    ACCESS当然不支持,那是SQL的语法.