Arn*_*rno 2 sql oracle select count zero
我有一个包含许多列的表,我在列上计算特定的名称,如果该名称不在列表中,我想将其显示为零,但不要进入列表。
SELECT Names, COUNT (*)
FROM NAMESTABLE
WHERE names IN
('Jenny',
'Penny',
'George',
'James',
'Jessica',
'Monica',
'Erica')
AND
adeddate BETWEEN '2014/10/15' AND '2014/10/16'
GROUP BY names
Run Code Online (Sandbox Code Playgroud)
NAMES || COUNT(*)
Jenny || 33
Penny || 4
George || 25
James || 87
Run Code Online (Sandbox Code Playgroud)
所以我想将杰西卡(Jessica),莫妮卡(Monica),埃里卡(Erica)设为零,即使这些名称不在COLUMN中
Names || Count(*)
Jenny || 33
Penny || 4
George || 25
James || 87
Jessica || 0
Monica || 0
Erica || 0
Run Code Online (Sandbox Code Playgroud)
nvl(count(*),0) 不起作用
您可以按名称将结果分组,然后left join将结果分组到您的名称表中以填补空白:
SELECT rn.name, NVL(cnt, 0)
FROM (SELECT 'Jenny' AS name FROM dual
UNION ALL
SELECT 'Penny' FROM dual
UNION ALL
SELECT 'George' FROM dual
UNION ALL
SELECT 'James' FROM dual
UNION ALL
SELECT 'Jessica' FROM dual
UNION ALL
SELECT 'Monica' FROM dual
UNION ALL
SELECT 'Erica' FROM dual) rn
LEFT JOIN (SELECT name, COUNT(*) AS cnt
FROM namestable
WHERE adeddate BETWEEN '2014/10/15' AND '2014/10/16'
GROUP BY name) n ON n.name = rn.name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10831 次 |
| 最近记录: |