2017-07-31 32 views
0

「列1」および「列5」でグループ化を実行しようとしていますが、列の合計2,3,4集計関数またはGROUP BY句に含まれていないため、 'Comptes.CO_NUMERO'列が選択リストで無効です

ただし、機能しません。これはのは、あなたを助けてみましょう私のクエリ

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)、 合計(Net_1)、 Rubrique、 OP_EXERCICE_COMPTA を望んでいた方法です に動作します –

関連する問題