2010-10-25 67 views
1

我試圖創建一個報告,並希望從表'聯繫'中提取一些信息。我試圖根據一系列標準提取與該聯繫人有關的'顧問'以及擁有該顧問的聯繫人數量。這很好,但是,我想根據不同的標準抽出第三列,這也是一個「計數」。這是我遇到麻煩的地方。SQL執行錯誤 - 無法解析查詢文本

目前,我有以下各國「無法分析查詢文本」:

SELECT advisoridName AS Advisor, 
    COUNT(*) WHERE (advisorid IS NOT NULL) AND (ContactType = 1) AND (StateCode = 0) AS 'Active Participants', 
    COUNT(*) WHERE (advisorid IS NOT NULL) AND (ContactType = 1) AS 'Total Participants' 
FROM Contact 
GROUP BY advisoridName, advisorid 
ORDER BY PDA 

,如果你能引導我在正確的方向將不勝感激。

在此先感謝

回答

1

COUNT(*)是不是有條件的,至少不會在TSQL。我建議使用​​... - 就像這樣:

SELECT advisoridName AS Advisor, 
    SUM(CASE WHEN (advisorid IS NOT NULL) AND (ContactType = 1) AND (StateCode = 0) 
      THEN 1 
      ELSE 0 
     END) AS 'Active Participants', 
    SUM(CASE WHEN (advisorid IS NOT NULL) AND (ContactType = 1) 
      THEN 1 
      ELSE 0 
     END) AS 'Total Participants' 
FROM Contact 
GROUP BY advisoridName, advisorid 
ORDER BY PDA 
0

你可以做同樣的事情算你沒有,但你不需要一個GROUP BY

SELECT COUNT (CASE when advisorid IS NOT NULL AND ContactType = 1 AND StateCode = 0 THEN AdvisorID END) as ActiveParticipants, 
COUNT (CASE when advisorid IS NOT NULL AND ContactType = 1 THEN AdvisorID) as TotalParticipants 
FROM Contact 
ORDER By PDA