汇总案例陈述的输出

时间:2014-08-28 19:48:35

标签: sql sql-server case

我有这样的查询:

SELECT
 case [Group]
  when 1 then 'in'
  when 0 then 'out'
  end as traffic

 FROM [GW_Test_Back_Up].[dbo].[ARC_Calls_ReportView]

这会创建一个包含许多行的新列,其中包含输入/输出流量,但我真正想要的只有两行,一行用于输入的总和,另一行用于输出的总和。我被困在如何做到这一点。

1 个答案:

答案 0 :(得分:2)

我相信你是在追求:

SELECT
SUM(CASE WHEN [Group] = 1 then 1 ELSE 0 END ) AS InCount,
SUM(CASE WHEN [Group] = 0 then 1 ELSE 0 END ) AS OutCount
 FROM [GW_Test_Back_Up].[dbo].[ARC_Calls_ReportView]

或许这个:

SELECT 'InCount' AS Type,
SUM(CASE WHEN [Group] = 1 then 1 ELSE 0 END ) AS InCount
FROM [GW_Test_Back_Up].[dbo].[ARC_Calls_ReportView]
UNION ALL
SELECT 'OutCount' AS Type,
SUM(CASE WHEN [Group] = 0 then 1 ELSE 0 END ) AS OutCount
FROM [GW_Test_Back_Up].[dbo].[ARC_Calls_ReportView]

修改

SELECT 
CASE WHEN m.InCount > 10 THEN 'High' ELSE 'Low' END AS InCountStatus
CASE WHEN m.OutCount > 10 THEN 'High' ELSE 'Low' END AS OutCountStatus
FROM 
(
   SELECT
     SUM(CASE WHEN [Group] = 1 then 1 ELSE 0 END ) AS InCount,
     SUM(CASE WHEN [Group] = 0 then 1 ELSE 0 END ) AS OutCount
   FROM [GW_Test_Back_Up].[dbo].[ARC_Calls_ReportView]
) m