SQL(Oracle):按某些列绑定的组
问题描述:
问题如下:我需要显示由每个客户进行的付款(使用codcli列代码标识)的数字(使用COUNT()
函数)但通过一些部门进行过滤(tipope列)。正如您在图片中看到的那样,该号码会显示出来,但会在分部之间进行拆分,而我希望每个客户只显示一次。SQL(Oracle):按某些列绑定的组
如何在没有付款分离的情况下过滤?
答
不包括在外部查询的部门(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
答
可能是我没有正确地理解你的问题,但为什么不干脆:
SELECT CODCLI, COUNT(*) AS SOMMA_BONIFICI
FROM MOV
WHERE TIPOPE IN ('VE5', ' VE9', 'PR5', 'PR9')
GROUP BY CODCLI
ORDER BY CODCLI;
+0
更容易!谢谢您的帮助 –
添加一些示例表数据和预期的结果 - 所有作为格式化文本(不是图像)。同时向我们展示您当前的查询尝试。 – jarlh
对不起,由于公司防火墙无法看到图像:/ - 您是否可以使用http://sqlfiddle.com/来演示此问题? – Nope
对不起,这是SQL查询:select codcli,tipope,count(codcli)as mov group by codcli,tipope ('VE5','VE9','PR5','PR9') order by codcli –