Comment calculer le déplacement somme basée sur la condition de teradata SQL?
J'ai données et je veux calculer la somme du champ USAGE_FLAG
mais réinitialisation lorsqu'il arrive à 0 ou se déplace vers un nouvel ID de garder le jeu de données commandé par SU_ID
et WEEK
:
SU_ID WEEK USAGE_FLAG
100 1 0
100 2 7
100 3 7
100 4 0
101 1 0
101 2 7
101 3 0
101 4 7
102 1 7
102 2 7
102 3 7
102 4 0
Je tiens donc à créer cette table:
SU_ID WEEK USAGE_FLAG SUM
100 1 0 0
100 2 7 7
100 3 7 14
100 4 0 0
101 1 0 0
101 2 7 7
101 3 0 0
101 4 7 7
102 1 7 7
102 2 7 14
102 3 7 21
102 4 0 0
J'ai essayé le MSUM()
fonction à l'aide de GROUP BY
mais il ne gardera pas l'ordre, je veux ci-dessus. Il regroupe les 7 et les numéros de semaine ensemble, je ne veux pas.
Ce que quelqu'un sait si c'est possible de le faire? Je suis l'aide de teradata
Cheers bluefeet, comment avez-vous éditer comme un tableau?
OriginalL'auteur wilsonm2 | 2012-12-11
Vous devez vous connecter pour publier un commentaire.
Dans le standard SQL une somme en cours d'exécution peut être fait à l'aide d'une fonction de fenêtrage:
Je sais Teradata prend en charge les fonctions de fenêtrage, je ne sais pas si il prend également en charge une commande dans la fenêtre de définition.
La réinitialisation de la somme est un peu plus compliqué. Vous devez d'abord créer "Id de groupe" qui changent à chaque fois que le usage_flag passe à 0. Les ouvrages suivants, en PostgreSQL, je ne sais pas si cela fonctionne dans Teradata ainsi:
Je ne sais pas ce qui est différent dans Teradata, mais le ci-dessus renvoie exactement ce que vous voulez dans PostgreSQL: sqlfiddle.com/#!12/2046f/1 et Oracle: sqlfiddle.com/#!4/ee6a1/2
De sorte qu'il n', merci! Je vais essayer de jouer un peu avec elle dans teradata et de voir quelle est la différence.
OriginalL'auteur a_horse_with_no_name
Essayer de code ci-dessous, avec l'utilisation de la fonction de RÉINITIALISATION, il fonctionne très bien.
OriginalL'auteur Amit Kumar Sethiya
S'il vous plaît essayer ci-dessous SQL:
Ici RÉINITIALISER LORSQUE usage_flag = 0 somme sera remise à zéro à chaque fois que la somme usage_flag tombe à 0
OriginalL'auteur Rohit Khattri