2014-06-06 40 views
1

我想计算列中两种类型事务的数量,并返回值为0(如果没有)。该表是交易,我想要返回的列是账户号码和列出的两个交易中的每一个的计数列。这里就是我的,但它不运行:Oracle SQL Developer查询返回来自同一列的2个值的计数

SELECT 
ACCTNBR, 
COUNT(CASE when RTXNTYPCD='XDEP'then 1 else 0) AS Deposits, 
COUNT(CASE when RTXNTYPCD='PWTH'then 1 else 0) AS Debits 

FROM 
TRANSACTION 

WHERE 
((POSTDATE BETWEEN TO_DATE('05-01-2014','MM-DD-YYYY')) AND TO_DATE('05-31-2014','MM-DD-YYYY')) 

and ACCTNBR in (406, 1206, 1347, 4556, 6668, 9845) 

GROUP BY 
ACCTNBR 
+0

你得到什么错误?是否可能与在每个“THEN”关键字前添加空格有关?或者可以在'CASE'上添加一个'END'? ;) – PlantTheIdea

回答

1

count函数计算不是null任何价值。由于01都不是null,因此您的count都将返回表中的总行数。相反,你应该使用sum

SELECT 
ACCTNBR, 
SUM(CASE when RTXNTYPCD='XDEP' then 1 else 0 END) AS Deposits, 
SUM(CASE when RTXNTYPCD='PWTH' then 1 else 0 END) AS Debits 
FROM 
TRANSACTION 
WHERE 
((POSTDATE BETWEEN TO_DATE('05-01-2014','MM-DD-YYYY')) AND 
        TO_DATE('05-31-2014','MM-DD-YYYY')) 
    and ACCTNBR in (406, 1206, 1347, 4556, 6668, 9845) 
GROUP BY 
ACCTNBR 
+0

谢谢 - 但在纠正SYN到SUM后,我仍然得到一个错误:ORA-00905:缺少关键字 00905. 00000 - “缺少关键字” *原因: *操作: 错误在行:8列: 12 – user3716611

相关问题