Bonjour,
Je suis débutante en Transact SQL.
Je voudrais, pour obtenir la colonne [06/01], diviser la somme des quantités (acl_amount) par le nombre de membres (mem_id) selon les conditions du when case. Le problème étant que, vu la requête, un même mem_id peut-être comptabilisé plusieurs fois, d'où la nécessité d'un distinct.
Sans faire la division, ça marche.
Voici ma requête (avec division et erreur):
select
[Commercial] = (mem.mem_ref03 + ' ' + mem.mem_ref04 + ' - points crédités'),
[06/01] = sum(case when (year(acl.acl_value_date)=2006 and month(acl.acl_value_date)=1) then acl_amount else 0 end)
/ (case when (year(acl.acl_value_date)=2006 and month(acl.acl_value_date)=1) then count(distinct mem1.mem_id) else 1 end)
from
tm_acl_account_line acl
inner join tm_acc_account acc on acc.acc_id = acl.acc_id
inner join tm_mem_member mem1 on mem1.mem_id = acc.mem_id
inner join tm_mgr_member_group mgr on mgr.mem_id = mem1.mem_id
inner join tm_mem_member mem on mgr.mem_id_parent = mem.mem_id
where
acl.alc_id = 1 and --crédit
mem1.mty_id = 1 and --restaurateur
mem.mty_id = 3 and --commercial
mem.prj_id= '1'
--mem.prj_id = @param1
group by (mem.mem_ref03 + ' ' + mem.mem_ref04 + ' - points crédités')
Le message d'erreur est :
Column 'acl.acl_value_date' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Mais je ne veux pas faire de group by sur ce champ, ce serait faux.
Qqn aurait une idée pour la syntaxe ou la méthode à utiliser svp?
Merci!!
Partager