oracle - 甚至为空值存储过程显示数据
问题描述
我做了这个查询来显示一些汇总数据。我也有兴趣显示不受影响的表格元素。经过几次无用的测试后,我尝试向您寻求帮助。
create or replace PROCEDURE PROVA
(
NOME IN VARCHAR2,
COGNOME IN VARCHAR2,
CARTA IN VARCHAR2,
output OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN output FOR
SELECT
dati.nome "NOME",
dati.cognome "COGNOME",
dati.carta "CARTA",
dati.profilo "PROFILO",
dati.s_denominazione "DENOMINAZIONE",
CASE
WHEN SUM(numacc) > 0 THEN
'TRUE'
ELSE
'FALSE'
END "ABILITATO",
SUM(numacc) "NUMERO ACCESSI"
FROM
(
SELECT
d.codicepunto,
d.s_denominazione,
a.carta carta,
c.nome nome,
c.cog cognome,
c.profilo profilo,
coalesce(a.numacc, 0) numacc
FROM
tabellaA a
JOIN tabellaB b
ON a.id = b.id
RIGHT OUTER JOIN TABELLAC c
ON a.carta = c.carta
RIGHT OUTER JOIN TABELLAD d
ON b.punto = d.punto
WHERE
(NOME IS NULL or c.nome = NOME)
AND
(COGNOME IS NULL or c.cog = COGNOME)
AND
(CARTA IS NULL or a.carta = CARTA)
AND
sysdate BETWEEN a.datinivalacc AND a.datfinvalacc
) dati
GROUP BY
dati.s_denominazione,
dati.carta,
dati.nome,
dati.cognome,
dati.profilo
ORDER BY
dati.s_denominazione;
END ;
这是结果:
名称 | 认知 | 宪章 | 简介 | 命名空间 | 阿比利塔托 | 数字访问 |
---|---|---|---|---|---|---|
阿尔伯特 | 威阿 | 010101 | 1 | 都灵 | 真的 | 10 |
阿尔伯特 | 威阿 | 010101 | 1 | 米兰 | 真的 | 20 |
(无效的) | (无效的) | (无效的) | (无效的) | 那不勒斯 | 错误的 | 0 |
(无效的) | (无效的) | (无效的) | (无效的) | 罗马 | 错误的 | 0 |
这就是我想要实现的目标:
名称 | 认知 | 宪章 | 简介 | 命名空间 | 阿比利塔托 | 数字访问 |
---|---|---|---|---|---|---|
阿尔伯特 | 威阿 | 010101 | 1 | 都灵 | 真的 | 10 |
阿尔伯特 | 威阿 | 010101 | 1 | 米兰 | 真的 | 20 |
阿尔伯特 | 威阿 | 010101 | 1 | 那不勒斯 | 错误的 | 0 |
阿尔伯特 | 威阿 | 010101 | 1 | 罗马 | 错误的 | 0 |
我错过了什么?输入参数都是可选的。
提前致谢
解决方案
推荐阅读
- android - 在 Android Eclipse 中出现错误“找不到与给定名称匹配的资源(在 'value' 处,值为 '@integer/google_play_services_version')”
- ssis - SSIS 编译问题 - DirectRowToOutput
- vb.net - 在另一个控件中交换订单
- javascript - 在构建树层次结构中挣扎
- amazon-web-services - 导入的私有证书无法链接到 AWS 中的 Api 网关
- solr - solr.MinFieldValueUpdateProcessorFactory 因浮点值比较失败
- twitter-bootstrap - 将全宽图像与右侧的 SVG 蒙版对齐,使用 Bootstrap 将外部容器对齐
- mp3 - 传输编码:分块和 MP3/Lame
- azure-cosmosdb - CosmosDB 分区和更新属性
- javascript - res.render 没有按预期工作?不加载新页面