2015-02-07 88 views
0

我在此处绘制一个主要空白。请帮助我。这里是我之情况:SQL - 仅选择具有特定多个值的列

************************ 
| Column A | Column B | 
| A  |  C | 
| A  |  D | 
| A  |  E | 
| A  |  F | 
| A  |  G | 
| A  |  H | 
| B  |  C | 
| B  |  D | 
| B  |  E | 
| B  |  F | 
| B  |  G | 
| B  |  H | 
| C  |  C | 
| C  |  D | 
| C  |  E | 
| C  |  F | 
| C  |  H | 
| C  |  I | 
| D  |  C | 
| D  |  D | 
| D  |  I | 
| E  |  G | 
************************ 

我需要得到所有在A列在B列既有“F”和“G”的值的计数我在这种情况下的结果应该是2( A和B都有F和G - C,而D不)。

我还需要计算A中只有'G'列中所有值的计数。我在场景中的结果应该是1(A和B都有'G',但它们有其它值仅有英文有一个“G”)

我能想出的唯一事情是下面的 - 我相信我是没谱的方式在这一个:。

SELECT COUNT(C.A) 
    FROM (
      SELECT C.A 
      FROM T 
      WHERE C.B = 'F' 
      OR C.B = 'G' 
      GROUP BY C.A 
      HAVING COUNT(*) > 1 
     ) AS CNT 

回答

0

你应该切不同的Bs

SELECT COUNT(*) As CountOfAs 
    FROM (
      SELECT C.A 
      FROM T 
      WHERE C.B = 'F' 
      OR C.B = 'G' 
      GROUP BY C.A 
      HAVING COUNT(DISTINCT(B)) > 1 
     ) AS CNT 
+0

Yeesh ...当然我错过了一个小字...谢谢Giorgi!今晚你很感激! – akaWizzmaster 2015-02-07 06:36:52