Question

J'ai une colonne calculée appelée Cost qui retourne l'argent.

Je veux avoir une autre colonne qui retourne (Cost * 2), mais cela ne me permet pas.

Était-ce utile?

La solution

Les colonnes calculées ne peuvent pas faire référence à d'autres colonnes calculées. Bien que vous devriez être en mesure de répéter l'expression que vous souhaitez faire référence. De MSDN :

  

Une colonne calculée est calculée à partir d'une expression qui peut utiliser d'autres colonnes dans la même table. L'expression peut être un noncomputed nom de colonne, constante, fonction, et toute combinaison de ceux-ci connectées par un ou plusieurs opérateurs. L'expression ne peut pas être une sous-requête.

Je dois aussi ajouter que si cela devait travailler comme vous l'espoir, il présenterait toutes sortes de nouvelles questions que vous auriez à traiter. À l'heure actuelle, les mises à jour dans de nombreuses colonnes / lignes se produisent en parallèle et atomiquement.

Par conséquent, il ne serait pas logique d'utiliser une colonne calculée dans votre calcul, car il ne serait pas exactement une valeur ... encore. Si quoi que ce soit, vous seriez en utilisant une ancienne valeur non actualisée.

Si vous voulez vraiment éviter de dupliquer l'expression, vous peut faire dans un déclencheur, mais je vous conseille vivement de pas faire. Les déclencheurs sont pas amusant et ne devraient être utilisés dans de rares cas par des gens très avertis.

Autres conseils

Vous devez le définir contre les colonnes de base dans le tableau .

  

computed_column_expression est un   expression qui définit la valeur d'un   colonne calculée. Une colonne calculée est   une colonne virtuelle qui ne soit pas   physiquement stockées dans la table, à moins que   la colonne est marquée PERSISTED. le   colonne est calculée à partir d'une expression   qui utilise d'autres colonnes dans la même   table. Par exemple, une colonne calculée   peut avoir la définition: coût AS prix   * Qté. L'expression peut être un nom de colonne noncomputed, constante,   fonction, variable et toute   combinaison de ceux-ci reliées par une   ou plusieurs opérateurs. L'expression   ne peut pas être une sous-requête ou contenir des alias   types de données.

Bien que vous puissiez les factoriser à la fois d'utiliser le même UDF scalaire (passe dans toutes les mêmes colonnes) pour faciliter la maintenance et assurer la cohérence de la logique, le succès de la performance serait énorme, et je n'utiliser que des FDU scalaires en dernier recours.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top