2013-07-31 49 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