在一个sql命令中从一个数据库表中选择多个计数

时间:2011-02-08 16:09:12

标签: sql database oracle select count

我有一个像这样的Oracle数据库表,它记录了在扫描点扫描的项目。

  

ItemsScan
   ItemScanId
   ItemScanPoint
  的ItemType
   SCANTIME

我想返回ItemScanPoint以及在该ItemScanPoint上扫描特定ItemType的次数。

有些事情......

SELECT ItemScanPoint,
       (SELECT COUNT(*) WHERE ItemType = 1),
       (SELECT COUNT(*) WHERE ItemType = 2)
FROM   ItemsScan

我如何在oracle中执行此操作?

最有效的方法是什么?

4 个答案:

答案 0 :(得分:13)

SELECT   ItemScanPoint,
         SUM(CASE ItemType WHEN 1 THEN 1 ELSE 0 END) ,
         SUM(CASE ItemType WHEN 2 THEN 1 ELSE 0 END)   
FROM     ItemsScan 
GROUP BY ItemScanPoint

答案 1 :(得分:0)

这对你有用吗?

select count(ItemScanId), itemscanpoint, itemtype
from itemsscan
where itemtype in (1,2)
group by itemtype, itemscanpoint

答案 2 :(得分:0)

Count是oracle中的分组函数。试试这个:

select
 ItemType,
 count(ItemType)
from
 ItemsScan
group by
 ItemType

答案 3 :(得分:0)

也可以使用COUNT()作为分析函数来执行此操作:

SELECT DISTINCT ItemScanPoint, ItemType
     , COUNT(ItemScanId) OVER (PARTITION BY ItemScanPoint, ItemType)
  FROM ItemsScan

它将以与OP中提供的格式不同的格式返回数据,但它会返回所有ItemType的结果,而不仅仅是两个。

希望这有帮助。