2017-09-25 2 views
0

Im utilisant over partition by clause pour calculer les chiffres mensuels des personnes.Suppression des doublons de 'over partition' par '

Un court exemple de mes résultats:

Date   Person  Team Daily Figure Month To Date 
    24/09/17  James   2   50   200 
    24/09/17  James   2   50   200 
    25/09/17  James   2   50   200 
    25/09/17  James   2   50   200 

Je calcule le chiffre mensuel en divisant le chiffre du jour sur la personne et le mois par exemple Le problème principal que j'ai, c'est que je veux seulement afficher le nombre quotidien d'aujourd'hui, mais avec la valeur du mois entier. Je groupe la figure pour chaque personne et limite aujourd'hui, mais pour être en mesure de regrouper par personne que je dois SUM le mois à la figure de la date qui me laisse évidemment avec

Date   Person  Team Daily Figure Month To Date 
    25/09/17  James   2   100   800 

Le chiffre du jour est correct, mais sa somme évidemment la lignes dupliquées qui me donne un chiffre incorrect.

Le résultat idéal aujourd'hui serait:

 Date   Person  Team Daily Figure Month To Date 
    25/09/17   James   2   100    200 

sans lignes dupliquées.

Quelqu'un a-t-il des conseils à ce sujet? Pour supprimer essentiellement des lignes cloisonnées en double donc je reçois juste le mois correct à la figure de date groupés

MISE À JOUR:

Chaque ligne est juste une figure individuelle pour chaque personne. Rien n'est groupé, donc chaque personne pourrait avoir au moins 20 rangées distinctes pour les chiffres de chaque jour

+0

Je ne peux pas suivre ce que vous voulez faire. De quelles données parlez-vous? Quelle est la définition de chaque rangée? –

+1

affichant votre requête ou des données brutes seront utiles - parce que de votre résultat requis actuel, je pense que vous pouvez utiliser un Group By au lieu de la fonction Windows –

+0

Le problème est que pour le moment je n'ai besoin que de chiffres quotidiens bien. Donc le groupe ne fonctionne pas pour calculer le chiffre mensuel car il ne le résume que pour ce jour - la fonction fenêtrée ne semble que l'option mais crée une somme dupliquée pour chaque ligne qui correspond au nom des personnes –

Répondre

1

Quelque chose comme ça?

declare @t table (Date date, Person varchar(100), Team int, [Daily Figure] int); 
insert into @t values 
    ('20170924',  'James',   2,   50), 
    ('20170924',  'James',   2,   50), 
    ('20170925',  'James',   2,   50), 
    ('20170925',  'James',   2,   50), 
    ('20170801',  'James',   2,   80), 
    ('20170802',  'James',   2,   80); 


select Date, Person, Team, sum([Daily Figure]) as [Daily Figure], 
     sum(sum([Daily Figure])) over(partition by Person, Team, month(date)) as [month to date figure] 
from @t 
group by Date, Person, Team;