从mysql查询中删除联合以在单行中获得2行输出

时间:2012-10-05 11:50:20

标签: mysql sql database

这是mysql查询

SELECT CallDate,SUM(Hour0) AS FailedCalls FROM call_status WHERE CallDate='2012-09-14' AND CallStatusId NOT IN (42,52)

UNION

SELECT CallDate,SUM(Hour0) AS SuccessCalls FROM call_status WHERE CallDate='2012-09-14' AND CallStatusId IN (42,52);

这是输出 enter image description here

抱歉这张小图片。 正如您所看到的,我使用上面的查询选择了失败的调用,而使用第二个查询选择了SuccessCalls。但我想要的是一行中的CallDate,FailedCalls,SuccessCalls。

更新 这是正确的查询:

SELECT CallDate,
SUM(CASE WHEN (CallStatusId NOT IN(42,52)) THEN Hour0
ELSE 0 
END) AS FailedCalls,
SUM(CASE WHEN (CallStatusId IN (42,52)) THEN Hour0
ELSE 0
END) AS SuccessCalls
FROM call_status
WHERE CallDate='2012-09-14';

1 个答案:

答案 0 :(得分:0)

这些方面的东西?

SELECT CallDate
      ,SUM( CASE WHEN (Hour0 != 42 AND Hour0 != 52) THEN 1 ELSE 0 END ) AS FailedCalls
      ,SUM( CASE WHEN (Hour0  = 42  OR Hour0  = 52) THEN 1 ELSE 0 END ) AS SuccessCalls
  FROM call_status
  WHERE CallDate='2012-09-14'