SQL(Oracle):按某些列绑定的组

SQL(Oracle):按某些列绑定的组

问题描述:

问题如下:我需要显示由每个客户进行的付款(使用codcli列代码标识)的数字(使用COUNT()函数)但通过一些部门进行过滤(tipope列)。正如您在图片中看到的那样,该号码会显示出来,但会在分部之间进行拆分,而我希望每个客户只显示一次。SQL(Oracle):按某些列绑定的组

如何在没有付款分离的情况下过滤?

enter image description here

+1

添加一些示例表数据和预期的结果 - 所有作为格式化文本(不是图像)。同时向我们展示您当前的查询尝试。 – jarlh

+0

对不起,由于公司防火墙无法看到图像:/ - 您是否可以使用http://sqlfiddle.com/来演示此问题? – Nope

+0

对不起,这是SQL查询:select codcli,tipope,count(codcli)as mov group by codcli,tipope ('VE5','VE9','PR5','PR9') order by codcli –

不包括在外部查询的部门(Tipope),并有一个子查询与您COUNT

SELECT CODCLI, SUM(SELECT COUNT(sub.CODCLI) 
        FROM mov sub 
        WHERE sub.TIPOPE = TIPOPE 
        GROUP BY sub.CODCLI) AS SOMMA_BONIFICI 
FROM mov 
WHERE TIPOPE IN ('VE5', ' VE9', 'PR5', 'PR9') 
GROUP BY CODCLI 
ORDER BY CODCLI 

这将输出:

CODCLI SOMMA_BONIFICI 
AA200078 16 
AA200300 10 
AA200412 3 
AA200309 9 
+0

已经完成,但我需要按部门进行过滤,否则使用count()函数获得不同的数字 –

+0

感谢您的帮助! –

+0

我不明白是谁和为什么给这个负面投票... – etsa

可能是我没有正确地理解你的问题,但为什么不干脆:

SELECT CODCLI, COUNT(*) AS SOMMA_BONIFICI 
FROM MOV 
WHERE TIPOPE IN ('VE5', ' VE9', 'PR5', 'PR9') 
GROUP BY CODCLI 
ORDER BY CODCLI; 
+0

更容易!谢谢您的帮助 –