2012-07-31 60 views
4

我想運行一個像這樣的選擇。選擇不同的WHERE條件

SELECT 
     COUNT(*) WHERE switch=0 AND detail=1 AS zeroone 
    AND 
     COUNT(*) WHERE switch=0 AND detail=2 AS zerotwo 
    AND 
     COUNT(*) WHERE switch=1 AND detail=1 AS oneone 
    AND 
     COUNT(*) WHERE swithc=1 AND detail=2 AS onetwo 
    FROM tablename 

有沒有辦法做到這一點?

回答

4

您可以使用CASE聲明在SELECT得到的結果:

SELECT SUM(case when switch=0 AND detail=1 then 1 else 0 end) as zeroone 
    , SUM(case when switch=0 AND detail=2 then 1 else 0 end) as zerotwo 
    , SUM(case when switch=1 AND detail=1 then 1 else 0 end) as oneone 
    , SUM(case when switch=1 AND detail=2 then 1 else 0 end) as onetw 
FROM tablename 
1
SELECT SUM(CASE WHEN switch = 0 and detail = 1 THEN 1 ELSE NULL END) AS zeroone 
    , ... 
FROM TableName 
4
SELECT 
    sum(switch=0 AND detail=1) AS zeroone, 
    sum(switch=0 AND detail=2) AS zerotwo, 
    sum(switch=1 AND detail=1) AS oneone, 
    sum(switch=1 AND detail=2) AS onetwo 
FROM tablename 
0

目前尚不清楚你想要什麼。

我想你想一個選擇,即返回一行,有4列:

SELECT 
COUNT(*) WHERE switch=0 AND detail=1 AS zeroone, 
COUNT(*) WHERE switch=0 AND detail=2 AS zerotwo, 
COUNT(*) WHERE switch=1 AND detail=1 AS oneone, 
COUNT(*) WHERE swithc=1 AND detail=2 AS onetwo 
FROM tablename 
0

你爲什麼不使用它?

SELECT COUNT(*) 
    FROM tablename 
GROUP BY switch, detail