我有一个像这样的Oracle数据库表,它记录了在扫描点扫描的项目。
ItemsScan
ItemScanId
ItemScanPoint
的ItemType
SCANTIME
我想返回ItemScanPoint以及在该ItemScanPoint上扫描特定ItemType的次数。
有些事情......
SELECT ItemScanPoint,
(SELECT COUNT(*) WHERE ItemType = 1),
(SELECT COUNT(*) WHERE ItemType = 2)
FROM ItemsScan
我如何在oracle中执行此操作?
最有效的方法是什么?
答案 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
的结果,而不仅仅是两个。
希望这有帮助。