SQL colonne calculée avec l'instruction du cas et de la table de jointure
Ok, j'ai fait quelques web creuser et n'arrive pas à trouver comment faire de cette situation de travail, ou même si elle est possible.
Je suis à l'aide de SQL Server 2008 et ont une colonne calculée, où je suis à essayer de comprendre certaines valeurs concernant les fluctuations des taux de change.
Bien qu'une seule table peut être plus facile dans le long terme, je voudrais utiliser la bonne solution qui implique deux tables différentes.
table t1
maisons d'un journal de transactions. tableau t2
maisons de l'information de base pour une devise donnée. Les deux tables peuvent être jointes à l'aide de la currencyCode
attribut.
La surface collante vient avec des espèces dépendantes des calculs. Actuellement, les calculs ne diffèrent que pour CR1
CR2
CR3
ou CR4
mais dans l'avenir en devises sont ajoutés, le potentiel existe pour les nouvelles monnaies diffèrent. Donc, idéalement, une nouvelle ligne sera ajoutée à t2
et un drapeau d'un bit (flagCurrencyCalc
) set qui spécifie l'autre calcul être utilisée ou non.
De sorte que la formule actuelle ressemble à quelque chose comme ceci:
(case when [currencyCode]='CR1' OR [currencyCode]='CR2' OR [currencyCode]='CR3' OR [currencyCode]='CR4' then (formula1) else (formula2) end)
Comme vous pouvez le voir, je dois aller manuellement dans et de modifier le formual par l'ajout d'un autre OU de la déclaration avec la nouvelle currencyCode.
Serait-il possible de faire quelque chose le long de la ligne de:
(case when t2.flagCurrencyCalc=True
pour une devise donnée code enregistrement a trouvé en t1 then (formula1) else (formula2) end)
???
OriginalL'auteur zentechinc | 2013-06-21
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas accéder à une autre table dans une colonne calculée directement (voir ici).
Voici quelques options.
Vous pouvez simplifier votre formule à l'aide de
in
:Vous pouvez utiliser une vue:
Vous pouvez définir une fonction pour vérifier la monnaie.
OriginalL'auteur Gordon Linoff
Oui c'est possible. Si l'autre table que vous proposez est dire
ensuite votre dossier, vous pouvez avoir une sous-requête
OriginalL'auteur madhav-turangi