J'ai une liste de colonnes et d'un drapeau correspondant. Basé sur le drapeau, toutes les valeurs des colonnes doivent être remplacées par NULL. Comment atteindre la même chose?
Exemple: p>
Tableau 1 strong> p> Tableau 2 forte > p> basé sur le drapeau de la table 1 (si 1), je veux définir des valeurs sur NULL dans le tableau 2. P> P>
4 Réponses :
Vous pouvez le faire comme
J'ai mis à jour la question.
Vous pouvez utiliser NULLIF () :
UPDATE T2
SET T2.COL1 = (CASE WHEN COLS = 'COL1' THEN NULL ELSE T2.COL1 END),
T2.COL2 = (CASE WHEN COLS = 'COL2' THEN NULL ELSE T2.COL2 END),
T2.COL3 = (CASE WHEN COLS = 'COL3' THEN NULL ELSE T2.COL3 END)
FROM table2 AS T2 CROSS JOIN
table1 AS T1
WHERE FLAG = 1;
@dishakear. . . Modifier la question Ajouter quelques données d'échantillon avec le résultat souhaité sera utile.
J'ai ajouté un exemple. Jetez un coup d'oeil s'il vous plait.
Vous pouvez annuler ces colonnes de cette façon: ou utilisez dynamique SQL si vous souhaitez qu'il fonctionne pour tout nombre inconnu de colonnes (construire votre code SQL par code et l'exécuter en utilisant < a href = "https://docs.microsoft.com/en-us/sql/relational-databases/systature-procedures/sp-executsql-transact-sql?view=SQL-Server-ver15" rel = "nofollow NOREFERRER "> SP_EXECUTSQL ). P> P>
Ma compréhension actuelle de la question est la suivante: Vous essayez de vérifier la table 1 pour le drapeau = 1, puis prenez la valeur de list_of_columns à partir de cet enregistrement et null sortir les enregistrements de cette colonne dans le tableau 2.
Voici un exemple sur la manière de traiter ce problème particulier. Cet exemple utilise un curseur et un SQL dynamique. P>
Disha, nous avons également besoin de savoir comment Tableau1 et Table2 sont connectés. Quel est leur rejoindre?
Merci pour la question. Aucune tables n'est connectée.
Essayez-vous simplement de sortir de la colonne du tableau 2 basé sur la valeur list_of_columns où la colonne Drapeau est 1?
@Jesse correct.