2017-07-31 64 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 再次谢谢你的答案是非常有帮助 –

相关问题