我有一个数据的Oracle表看起来像这样:的Oracle SQL查询来总结统计,使用GROUP BY
ID BATCH STATUS
1 1 0
2 1 0
3 1 1
4 2 0
也就是说,ID是主键,将有各多行“批处理”,并且每行将在STATUS列中具有状态码。还有其他一些列,但这些是重要的列。
我需要写一个查询,它将总结状态码每个批次;有三种可能的值,可以在状态栏中去,0,1,2,我想输出看起来是这样的:
BATCH STATUS0 STATUS1 STATUS2
1 2 1 0
2 1 0 0
这些数字将是数;对于批次1,存在其中STATUS设为
- 2记录0
- 1记录其中STATUS被设置为1,并
- 没有记录,其中STATUS被设置为0 。
对于批2,有
- 1分的记录,其中状态设置为0,并
- 没有记录,其中状态设置为1或2
有没有一种方法,我可以在一个查询做到这一点,没有不得不重写每个状态码的查询?即我可以很容易地编写一个查询,并运行它三次:
SELECT batch, COUNT(status)
FROM table
WHERE status = 0
GROUP BY batch
我可以运行,然后再运行它在那里的地位= 1,并再次在那里的地位= 2,但我希望能在一个查询中完成。
如果它的确与众不同,除了从状态列有另一个列,我可能想总结以同样的方式 - 我不希望有选择后执行SELECT语句的另一个原因声明并合并所有结果。
感谢您的支持! – imiric 2010-12-06 14:23:46