2012-07-20 116 views
1

是否有任何获取fieldB计数的方法,但只有fieldA和fieldB组合是唯一的?SQL - 计算包含两个不同字段的行数

例如

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数量FROM表GROUP BY fieldB' 尝试。这似乎返回fieldB中所有值的计数,而不仅仅是具有唯一fieldA的值。

我希望我想要做的事情有意义,我很难说出来。我试图用SQL来做什么?

感谢

回答

3

应该

SELECT fieldB, COUNT(DISTINCT fieldA, fieldB) AS count 
FROM table 
GROUP BY fieldB; 
+0

感谢所有的快速回答,这只是我尝试过的第一个,并且似乎完美地工作。 - 谢谢 – jd182 2012-07-20 10:30:43

0
SELECT fieldA, COUNT(fieldB) AS count from 
(SELECT DISTINCT fieldA, fieldB FROM table)a 
FROM a GROUP BY a.fieldB 
0

我觉得这让你有

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一 1B中 1 C

0
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 
+0

@RaphaëlAlthaus对不起,但它返回2为A. – 2012-07-20 10:38:18

+0

Downvote? @RaphaëlAlthaushttp://sqlfiddle.com/#!3/61853/1 – 2012-07-20 10:41:27

+1

Sql Server。尝试与MySQL ... http://sqlfiddle.com/#!2/61853/1 – 2012-07-20 10:43:47