Bonjour,
Je n'ai pas vraiment compris votre message, ni en quoi le fait que les calculs soient ensemblistes empêche de faire des colonnes calculées de colonnes calculées....
Pour donner un exemple précis.
J'ai une table avec 3 colonnes, A, B, et C.
Je veux rajouter D = (si A > 50; 0, sinon 1)
et E = ( D*C)
J'ai en gros 3 possibilités:
1 2 3
| 1/ ALTER TABLE Table ADD D as (case when A > 50 then 1 else 0 ) PERSISTED;
ALTER TABLE Table ADD E as (case when A > 50 then 1 else 0 )*C;
SELECT * FROM TABLE |
2/ SELECT *, E AS D*C FROM ( SELECT *, (case when A > 50 then 1 else 0 ) as D);
ou
1 2
| 3/ ALTER TABLE Table ADD D as (case when A > 50 then 1 else 0 ) PERSISTED;
SELECT *, E AS D*C FROM Table. |
Je veux savoir quelle est la meilleure façon de faire sachant que ce n'est pas 2 colonnes que je compte calculer, mais des 10 aines, chacune dépendant du résultat de la précédente... La méthode 2/ me semble clairement sous optimisée car on fait 2 fois le calcul....
Et s'il y a une autre façon de faire
moi, j'espérais
1 2 3
| ALTER TABLE Table ADD D as (case when A > 50 then 1 else 0 ) PERSISTED;
ALTER TABLE Table ADD E as (D*C ) PERSISTED;
SELECT * FROM TABLE |
Partager