如何在VIEW中以不同方式计算列值?

时间:2010-09-08 08:50:51

标签: sql sql-server-2005 tsql sql-server-2008

我在Datablase表中有一个列,假设它的观察包含三种类型的值

  1. 否定
  2. NULL
  3. 现在我想计算总行数,总正数和总负数以及其他一些列。我不能在这里使用Where子句。它的观点

    所以结果应该像

    Total   Positive   Negative   SomeOtherCoulumn
     255       80        120            Test1
     315      135         65            Test2  
    

    我尝试在这里使用SQL COUNT但无法获得所需的结果。

2 个答案:

答案 0 :(得分:3)

SELECT
    COUNT(*) AS Total,
    SUM(CASE WHEN Observation = 'Positive' THEN 1 ELSE 0 END) AS Positive,
    SUM(CASE WHEN Observation = 'Negative' THEN 1 ELSE 0 END) AS Negative,
    SomeOtherColumn
FROM your_view
GROUP BY SomeOtherColumn

答案 1 :(得分:2)

有一种有趣的技巧可以像这样总结一个案例表达式:

sum(case when Observation = 'Positive' then 1 else 0 end) 'TotalPositive' 

其余的很容易。