2017-10-05 84 views
1

問題如下:我需要顯示由每個客戶進行的付款(使用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 –

回答

0

不包括在外部查詢的部門(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

2

可能是我沒有正確地理解你的問題,但爲什麼不乾脆:

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

更容易!謝謝您的幫助 –