2013-07-31 47 views
1

我需要做多个计数。我有大约6栏。事情是这样的:使用SQL使用多个查询的多个SQL计数

SELECT 
COUNT(C.ID) as 'Column 1', 
COUNT(C.ID) as 'Column 2', 
COUNT(C.ID) as 'Column 3', 
COUNT(C.ID) as 'Column 4', 
FROM CONTACT C 

我需要能够运行使用不同的查询,但不能确定如何适用查询计数一个结果不同的计数。

回答

2

这里有几个选项。

1)使用子查询作为@TheSoultion提出

2)使用UNION使用

SELECT 'A' NAME, COUNT(c.ID) [COUNT] FROM Contact c WHERE ... 
    UNION 
    SELECT 'B' NAME, COUNT(c.ID) [COUNT] FROM Contact c WHERE ... 

3)的情况下,它确实是同一个子集,但你要根据一定的条件来概括,用例然后在你的计数内

SELECT sum(case ... when ... then 1 else 0 end) counta, 
     sum(case ... when ... then 1 else 0 end) countb 
FROM ... WHERE ... 
+0

'将varchar值'London'转换为数据类型int.'时发生转换失败 - 我在使用UNION时得到此... – PriceCheaperton

+0

@PriceCheaperton显示您的确切查询。 – vittore

0

您需要运行子查询,或者至少这是一个方法:

SELECT 
    (SELECT COUNT(c.ID) FROM Contact c WHERE ...) AS Column1, 
    (SELECT COUNT(c.ID) FROM Contact c WHERE ...) AS Column2 
+0

'子查询返回的值超过1。当子查询遵循=,!=,<, <= , >,> =或当子查询用作表达式时,这是不允许的。' – PriceCheaperton

+0

@PriceCheaperton,以及您使用了哪个WHERE子句? –

1

如果我理解你想要做什么,我通常最终会做这种方式:

SELECT 
SUM(CASE WHEN Condition1 THEN 1 END) AS Column1, 
SUM(CASE WHEN Condition2 THEN 1 END) AS Column2 
FROM Contact