在sql中每个日期动态生成列

时间:2017-03-01 16:58:46

标签: sql sql-server pivot

我有一个表格,其中存储了员工所犯错误的数量。

i_empid error_category  error_count    date    
    13           1              1      1-feb-2017                                             
    13           2              1      1-feb-2017
    13           2              2      3-feb-2017
    341          1              1      3-feb-2017

我希望结果集按特定日期的错误类别分组

  error_category  error_count    1-feb-2017     2-feb-2017     3-feb-2017
        1              2            1              0              1         
        2              0            1              0              2

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

我不确定你使用的是什么数据库,是MySQL吗?

我认为你试图做这样的事情:

select t.error_category, t.error_count, sum(IF(t.date='1-feb-2017',1,0)) as `1-feb-2017`,
sum(IF(t.date='3-feb-2017',1,0)) as `3-feb-2017`
from <yourTable> t
group by t.error_category

实际上有不同的方法来实现这个目标