Quelle est la syntaxe correcte ou est-il possible d'utiliser case dans une partition select et dans par? (Utilisant le serveur SQL 2012)sélectionnez un cas avec "over partition by"
a = unique id
b = a string'xf%'
c = values
d = values
e = values
select
case
when b like 'xf%' then
(sum(c*e)/100*3423 over (partition by a))end as sumProduct
from #myTable
c'est quelque chose que je dois résoudre ce qui est une partie d'un problème que j'avais précédemment sumProduct in sql
modifier: sur demande l'ajout des données échantillon et résultat attendu create table #testing (b varchar (20), une date, c int, int e)
b a c e sumProduct (expected)
xf1m 2015.03.02 1 3 (1*3 + 2*5 + 4*2 +3*6)*100/3423
xf3m 2015.03.02 2 5 (1*3 + 2*5 + 4*2 +3*6)/100*3423
xf5y 2015.03.02 4 2 (1*3 + 2*5 + 4*2 +3*6)/100*3423
xf10y 2015.03.02 3 6 (1*3 + 2*5 + 4*2 +3*6)/100*3423
adfe 2015.03.02 2 5 ---this is skipped because is not xf%
xf1m 2013.02.01 7 2 (7*2 + 1*8 + 10*1)/100*3423
xf15y 2013.02.01 1 8 (7*2 + 1*8 + 10*1)/100*3423
xf20y 2013.02.01 10 1 (7*2 + 1*8 + 10*1)/100*3423
j'ai vu que le problème est le suivant: des choses sont ajoutées en même si elles ne correspond pas aux critères. Dans mon violon, vous pouvez voir que le résultat pour sumProduct est 49 au lieu de 39 parce que 2 * 5 de adfe est ajouté. Que puis-je faire à ce sujet?
create table #testing (b varchar (20), a date, c int, e int)
insert into #testing (b,a,c,e)
values
('xf1m','2015-03-02','1','3'),
('xf3m','2015-03-02','2','5'),
('xf5y','2015-03-02','4','2'),
('xf10y','2015-03-02','3','6'),
('adfe','2015-03-02','2','5'),
('xf1m','2013-02-01','7','2'),
('xf15y','2013-02-01','1','8'),
('xf20y','2013-02-01','10','1')
modifier: trouvé la solution, écrit comme une réponse ci-dessous
Puis-je reformuler le problème d'une autre manière? ou ce que je fais mal (concernant le downvote). Encore un débutant sur ce site, toute suggestion vous aidera. Merci –