Bonjour,
je suis entrain de porter une appli de Oracle vers MS SQL server et j'aurai aimé savoir si il existe une manière simple de remplacer GREATEST qui est spécifique à Oracle
Merci
Bonjour,
je suis entrain de porter une appli de Oracle vers MS SQL server et j'aurai aimé savoir si il existe une manière simple de remplacer GREATEST qui est spécifique à Oracle
Merci
je ne connais pas en sql serveur
d'ailleurs connaitre le max d'une liste DEFINIE n'est pas du SQL
peux-tu mettre le code de ta requete Oracle ?
C'est bon j'y suis arrivé
Le problème était de creer une colonne avec pour chaque ligne le plus grand de plusieurs autres champs avec des "priorites" sur certains et des regles differentes en fonction du fait qu'ils soient Null ou pas (la table temporaire sur lequel se fait ce "traitement" est issu de multiples jointures OUTER).
bref
En fait il suffit d'utiliser un enchainement de CASE WHEN dans les attributs puis d'aliasser tout ça dans une colonne cible.
désolé pour l'explication foireuse mais je fait de la bdd depuis très peu, je ne possède pas le jargon addapté.
voila un petit bout de la requete (en fait une longue suite d'union) qui a mon avis n'est pas vraiment optimisée (ni très claire)...
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147 SELECT * FROM( SELECT TOP 20 ID_DEMANDE, DEM_NO, TITRE, ptouttiers.DATE_CREATION as CREATIONDATE, CREATED_BY_PERSONNE, DEM_TYPE, ptouttiers.ID_TIERS as TIERSID, TI_NOM, ptouttiers.ID_PRODUIT as PRODID, NOM_PRODUIT, ID_SOCIETE, ID_AFFECTATION, DATE_RESOLUTION, ID_TRAITEMENT, ID_SOC_T, ID_AFF_T, DATE_RES_T, CASE WHEN DEM_ETAT_T IS NULL THEN DEM_ETAT ELSE DEM_ETAT_T END AS DEM_ETAT_FIN, CASE WHEN ID_SOC_T IS NULL THEN ID_SOCIETE ELSE ID_SOC_T END AS ID_SOC_FIN FROM (SELECT * FROM (SELECT * FROM (SELECT * FROM ( SELECT DISTINCT p2.ID_DEMANDE as dem2, p1.higher FROM ( SELECT p1.ID_DEMANDE as dem, higher=MAX(p1.ID_TRAITEMENT) FROM DEMANDE_TRAITEMENT p1 GROUP BY p1.ID_DEMANDE )AS p1 INNER JOIN DEMANDE_TRAITEMENT p2 ON p1.higher = p2.ID_TRAITEMENT AND dem = p2.ID_DEMANDE )AS p2 RIGHT OUTER JOIN DEMANDES pd ON pd.ID_DEMANDE = dem2 )AS pegle LEFT OUTER JOIN (SELECT DISTINCT plast.ID_TRAITEMENT, plast.ID_SOCIETE AS ID_SOC_T, plast.ID_AFFECTATION AS ID_AFF_T, plast.DEM_ETAT AS DEM_ETAT_T , plast.DATE_RESOLUTION AS DATE_RES_T FROM DEMANDE_TRAITEMENT plast) AS plast ON pegle.higher = plast.ID_TRAITEMENT ) AS ptout LEFT OUTER JOIN ( SELECT TI_NOM, ID_TIERS AS tiers FROM N_TIERS ptiers ) AS ptiers ON ptiers.tiers = ptout.ID_TIERS ) AS ptouttiers LEFT OUTER JOIN N_PRODUIT pprod ON pprod.ID_PRODUIT = ptouttiers.ID_PRODUIT WHERE DEM_ETAT = 6 AND DEM_ETAT_T = 6 ORDER BY CREATIONDATE DESC) as tabletest1 UNION SELECT * FROM( SELECT TOP 15 ID_DEMANDE, DEM_NO, TITRE, ptouttiers.DATE_CREATION as CREATIONDATE, CREATED_BY_PERSONNE, DEM_TYPE, ptouttiers.ID_TIERS as TIERSID, TI_NOM, ptouttiers.ID_PRODUIT as PRODID, NOM_PRODUIT, ID_SOCIETE, ID_AFFECTATION, DATE_RESOLUTION, ID_TRAITEMENT, ID_SOC_T, ID_AFF_T, DATE_RES_T, CASE WHEN DEM_ETAT_T IS NULL THEN DEM_ETAT ELSE DEM_ETAT_T END AS DEM_ETAT_FIN, CASE WHEN ID_SOC_T IS NULL THEN ID_SOCIETE ELSE ID_SOC_T END AS ID_SOC_FIN FROM (SELECT * FROM (SELECT * FROM (SELECT * FROM ( SELECT DISTINCT p2.ID_DEMANDE as dem2, p1.higher FROM ( SELECT p1.ID_DEMANDE as dem, higher=MAX(p1.ID_TRAITEMENT) FROM DEMANDE_TRAITEMENT p1 GROUP BY p1.ID_DEMANDE )AS p1 INNER JOIN DEMANDE_TRAITEMENT p2 ON p1.higher = p2.ID_TRAITEMENT AND dem = p2.ID_DEMANDE )AS p2 RIGHT OUTER JOIN DEMANDES pd ON pd.ID_DEMANDE = dem2 )AS pegle LEFT OUTER JOIN (SELECT DISTINCT plast.ID_TRAITEMENT, plast.ID_SOCIETE AS ID_SOC_T, plast.ID_AFFECTATION AS ID_AFF_T, plast.DEM_ETAT AS DEM_ETAT_T , plast.DATE_RESOLUTION AS DATE_RES_T FROM DEMANDE_TRAITEMENT plast) AS plast ON pegle.higher = plast.ID_TRAITEMENT ) AS ptout LEFT OUTER JOIN ( SELECT TI_NOM, ID_TIERS AS tiers FROM N_TIERS ptiers ) AS ptiers ON ptiers.tiers = ptout.ID_TIERS ) AS ptouttiers LEFT OUTER JOIN N_PRODUIT pprod ON pprod.ID_PRODUIT = ptouttiers.ID_PRODUIT WHERE DEM_ETAT = 5 AND DEM_ETAT_T = 5 ORDER BY ptouttiers.DATE_CREATION DESC) AS tabletest2 ORDER BY DEM_ETAT_FIN ASC, CREATIONDATE DESC
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager