2012-07-31 44 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