Bonjour,
J'ai une table dont une colonne "Numero" a des valeurs à '' (vide) ou null.
Je veux mettre à jour ces valeurs suivant la règle suivante :
Pour un tuple "Source"/"polNb"/"Ccy", prendre la date minimum du champs "DtDebut" (que l'on nommera min(DtDebut) ci-dessous) et appliquer les règles suivantes :
If DtDebut = min(DtDebut) then Numero = 0
If DtDebut = min(DtDebut) + 1 an then Numero = 1
If DtDebut = min(DtDebut) + 2 an then Numero = 2
If DtDebut = min(DtDebut) + 3 an then Numero = 3
etc...
J'ai essayé notamment le code suivant :
Mais en plus de ne pas être générique, il me donne l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 UPDATE MyTable t1 SET t1.Numero = ( SELECT CASE WHEN t2.DtDebut = MIN(t2.DtDebut) THEN 0 WHEN t2.DtDebut = DATEADD(year, 1, MIN(t2.DtDebut)) THEN 1 WHEN t2.DtDebut = DATEADD(year, 2, MIN(t2.DtDebut)) THEN 2 WHEN t2.DtDebut = DATEADD(year, 3, MIN(t2.DtDebut)) THEN 3 --potential need for adding cases here END FROM MyTable AS t2 WHERE t1.Source = t2.Source AND t1.polNb = t2.polNb AND t1.Ccy = t2.Ccy ) WHERE t1.Numero = '' OR t1.Numero IS NULL;
Je ne comprends pas le message d'erreur car je n'utilise pourtant que le champs "DtDebut", donc il me semble que je pourrais donc bien utiliser la fonction MIN() dessusError in SQL statement: AnalysisException: [MISSING_GROUP_BY] The query does not include a GROUP BY clause. Add GROUP BY or turn it into the window functions using OVER clauses.
Est-ce que vous voyez comment faire s'il vous plaît pour que ce soit générique et que ça compile ?
Partager