J'ai donc cette table SQL à mettre à jour. Maintenant, nous utilisons un outil pour faire le processus, donc si nous venons de renommer la colonne, cela ne fonctionnerait pas parce que notre outil laisserait tomber l'ancienne colonne et ajouter une nouvelle colonne avec le nouveau nom, donc nous devons le faire manuellement et entrer ce code dans la construction et exclure la table de notre construction.Question à propos de l'instruction SQL UPDATE avec CASE
La table que nous avons ACTUELLEMENT a une colonne appelée 'FeeTypeId'. Nous avons une autre table, une table de recherche, qui a un tas d'ID concernant les types et les descriptions. Nous voulons ce champ 'FeeTypeId' précédent sur l'autre table que je viens de mentionner, pour contenir ces LookupId qui se rapportent à leur 'FeeDescription' spécifique. Je vais avoir une feuille Excel qui contient les mappings, donc pour l'instant il n'y a pas de données réelles, juste de la logique.
Voici le script que j'ai écrit mais je ne sais pas s'il va fonctionner. Pouvez-vous m'aider?
----------------------------------------------------------------------
--PRE_UPGRADE--
----------------------------------------------------------------------
CREATE TABLE dbo.TmpFeesToRules(OldValue varchar, NewValue varchar)
--populate with values from Excel
----------------------------------------------------------------------
--POST UPGRADE--
----------------------------------------------------------------------
UPDATE Lending.ApplicationFee
SET FeeTypeId =
CASE t.NewValue
WHEN <> null THEN (SELECT LookupID FROM tblLookup WHERE LookupType = 'FEE_CODE' AND LookupDesc = t.NewValue)
ELSE (SELECT LookupID FROM tblLookup WHERE LookupType = 'FEE_CODE' AND LookupCode = 'OTHER') END
-- else might change, might not even need an else
FROM TmpFeesToRules t INNER JOIN tblLookup l ON t.NewValue = l.LookupDesc
-- Drop the tmp table
DROP TABLE dbo.TmpFeesToRules
Est-il acceptable de faire cela dans une procédure stockée, de sorte que vous pouvez d'abord créer une variable que vous attribuez la valeur à (en utilisant cette déclaration de cas), utilisez alors que dans votre mettre à jour? Cela améliorerait considérablement la lisibilité de votre code. – Rob
Je souhaite. C'est à peu près la seule façon de le faire à cause de la façon dont nous construisons. Ils ne veulent rien ajouter à la base de données actuelle. Sinon, je créerais probablement une autre table avec toutes les nouvelles données, et je n'aurais aucun problème avec la compilation de l'ancien. Ensuite, je voudrais juste le copier. – Scott