代码之家  ›  专栏  ›  技术社区  ›  jd182

SQL-计算包含两个不同字段的行数

  •  1
  • jd182  · 技术社区  · 14 年前

    有没有办法计算fieldB,但只有在fieldA和fieldB组合是唯一的情况下?

    例如

    fieldA     fieldB
    X          A
    X          B
    Y          C
    X          B
    Y          A
    

    字段B的计数将返回:

    A = 2
    B = 1
    C = 1
    

    我尝试过使用“SELECT DISTINCT fieldA,COUNT(fieldB)AS COUNT FROM table GROUP BY fieldB”。这似乎返回了字段B中所有值的计数,而不仅仅是具有唯一字段a的值。

    我希望我想做的事情有意义,我发现很难用语言表达。我试图用SQL做的事情可能吗?

    谢谢

    4 回复  |  直到 14 年前
        1
  •  3
  •   Raphaël Althaus    14 年前

    应该是

    SELECT fieldB, COUNT(DISTINCT  fieldA, fieldB) AS count 
    FROM table 
    GROUP BY fieldB;
    
        2
  •  0
  •   Joe G Joseph    14 年前
    SELECT   fieldA, COUNT(fieldB) AS count from
    (SELECT DISTINCT fieldA, fieldB FROM table)a
    FROM a GROUP BY a.fieldB
    
        3
  •  0
  •   u07ch    14 年前

    我想这能让你达到目的

    Declare @mytbl table (fieldA char(1), fieldB char(1))
    insert into @mytbl
    select 'X','A'
    union all select 'X','B'
    union all select 'Y','C'
    union all select 'X','B'
    union all select 'Y','A'
    
    select COUNT(*), LEFT(myfields,1)
    from 
    (
    select distinct fieldb + fielda as myfields
    from @mytbl
    group by fieldb + fielda
    ) a
    group by LEFT(myfields,1)
    

    退货

    2个 1个B 1摄氏度

        4
  •  0
  •   Vishwanath Dalvi    14 年前
    DECLARE @mytb table
    (
    fieldA varchar(10),
    fieldB varchar(10)
    );
    
    INSERT into @mytb values('X','A');
    INSERT into @mytb values('X','B');
    INSERT into @mytb values('Y','C');
    INSERT into @mytb values('X','B');
    INSERT into @mytb values('Y','A');
    
    SELECT fieldB,count(DISTINCT fieldA+fieldB) as count
    from @mytb
    group BY fieldB;
    
    
       fieldB     count
    ---------- -----------
        A          2
        B          1
        C          1