2017-07-31 70 views
0

我試圖通過「列1」和「列5」進行分組,和求和列2,3,4列'Comptes.CO_NUMERO'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中

但它不起作用。請幫助

這是我的查詢

SELECT Post,Montant_Brut,Montant_AP,Net_1,Rubrique,OP_EXERCICE_COMPTA from(
select 
(case when left(C.CO_NUMERO,3) like '_9_' or left(C.CO_NUMERO,3) like '_8_' then (SUBSTRING(C.CO_NUMERO, 1, 1) + SUBSTRING(C.CO_NUMERO, 3, 1) + SUBSTRING(C.CO_NUMERO, 4, 1)) else left(C.CO_NUMERO,3) end) as Post, 
(case when left(C.CO_NUMERO,3) like '_9_' or left(C.CO_NUMERO,3) like '_8_' then sum (0) else (sum(C.CO_MONTANT)) end) as Montant_Brut, 
(case when left(C.CO_NUMERO,3) like '_9_' or left(C.CO_NUMERO,3) like '_8_' then (sum(C.CO_MONTANT)) else sum(0) end) as Montant_AP, 
(case when O.OP_TYPE like 'Anouveaux' then (sum(C.CO_MONTANT)) else sum(0) end) Net_1, 
(case when left(C.CO_NUMERO,2) like '_9' or left(C.CO_NUMERO,2) like '_8' then (SUBSTRING(C.CO_NUMERO, 1, 1) + SUBSTRING(C.CO_NUMERO, 3, 1)) when left(C.CO_NUMERO,2) like '25' then '24' else left (C.CO_NUMERO,2) end) as Rubrique, 
O.OP_EXERCICE_COMPTA 
from Operations O inner join Comptes C on O.OP_ID = C.CO_OP_NUMERO WHERE ((C.CO_NUMERO between '21%' and '40%') or (C.CO_NUMERO like '51%')) and O.OP_EXERCICE_COMPTA = 11 
) a group by Post, Rubrique 

回答

1

讓我們儘量幫你。

首先,你需要用group by子句理解一些東西。這是一個小組,這將使你能夠統計或總結結果,並仍然能夠保持一個關鍵。

所以當你試圖總結你的c.co_montant時,你沒有權利使用c.co_numero。

您的查詢看起來幾乎不錯,除了這一點。

試用這個版本:

SELECT Post 
,sum(Montant_Brut) 
,sum(Montant_AP) 
,sum(Net_1) 
,Rubrique 
,sum(OP_EXERCICE_COMPTA) 
from(
    select 
    (case when left(C.CO_NUMERO,3) like '_9_' or left(C.CO_NUMERO,3) like '_8_' then (SUBSTRING(C.CO_NUMERO, 1, 1) + SUBSTRING(C.CO_NUMERO, 3, 1) + SUBSTRING(C.CO_NUMERO, 4, 1)) else left(C.CO_NUMERO,3) end) as Post, 
    (case when left(C.CO_NUMERO,3) like '_9_' or left(C.CO_NUMERO,3) like '_8_' then 0 else (C.CO_MONTANT) end) as Montant_Brut, 
    (case when left(C.CO_NUMERO,3) like '_9_' or left(C.CO_NUMERO,3) like '_8_' then (C.CO_MONTANT) else 0 end) as Montant_AP, 
    (case when O.OP_TYPE like 'Anouveaux' then (C.CO_MONTANT) else 0 end) Net_1, 
    (case when left(C.CO_NUMERO,2) like '_9' or left(C.CO_NUMERO,2) like '_8' then (SUBSTRING(C.CO_NUMERO, 1, 1) + SUBSTRING(C.CO_NUMERO, 3, 1)) when left(C.CO_NUMERO,2) like '25' then '24' else left (C.CO_NUMERO,2) end) as Rubrique, 
    O.OP_EXERCICE_COMPTA 
from Operations O inner join Comptes C on O.OP_ID = C.CO_OP_NUMERO WHERE ((C.CO_NUMERO between '21%' and '40%') or (C.CO_NUMERO like '51%')) and O.OP_EXERCICE_COMPTA = 11 
) a group by Post, Rubrique 

我把你和行動,並在GROUP BY子句的結果,那麼推杆。

只要我無法測試該代碼,我想讓你告訴我它是否工作。

+0

非常感謝你,先生!它的工作原理 這是我想它 SELECT後, 總和(Montant_Brut), 總和(Montant_AP), 總和(網_1), Rubrique, OP_EXERCICE_COMPTA 再次謝謝你的答案是非常有幫助 –

相關問題