2011-03-24 40 views
0

這是我的查詢MySQL的意見我查詢的輸出,我需要不同的方式

Select Count(Case When campaign_pid != 0 Then 1 End) 
    As Email, Count(Case When sms_pid != 0 Then 1 End) 
    As Sms, Count(Case When survey_pid != 0 Then 1 End) 
    As Survey From tablename 

請幫助我,這是我的查詢輸出

Email Sms  Survey  
21  1  4 

我需要這樣的

name value 
Email 21 
Sms  1 
Survey 4 

輸出請告訴我如何得到像以上一樣的選擇

回答

1

類似下面應該工作

SELECT 'Email' AS Name, Count(Case When campaign_pid != 0 Then 1 End) As Value From tablename 
UNION SELECT 'SMS', Count(Case When sms_pid != 0 Then 1 End)s From tablename 
UNION SELECT 'Survey', Count(Case When survey_pid != 0 Then 1 End) From tablename 

或更好

SELECT 'Email' AS Name, COUNT() AS Value FROM tablename WHERE campaign_pid <> 0 
UNION SELECT 'SMS', COUNT() FROM tablename WHERE sms_pid <> 0 
UNION SELECT 'Survey', COUNT() FROM tablename WHERE survey_pid <> 0 

不是100%肯定您的其他問題,也許這就是你要

SELECT COUNT(DISTINCT some_unique_col) 
    FROM table_name 
WHERE campaign_pid <> 0 
    AND sms_pid <> 0 
    AND survey_pid <> 0 

也許你想要什麼SUM代替COUNT,如果您可以提供一些樣本數據和預期結果,它將有助於

+0

非常感謝 – Mohan 2011-03-24 11:50:20