-2
votes

Comment annuler la colonne en fonction du drapeau dans SQL Server?

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:

Tableau 1 xxx

Tableau 2 xxx

basé sur le drapeau de la table 1 (si 1), je veux définir des valeurs sur NULL dans le tableau 2.


4 commentaires

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.


4 Réponses :


1
votes

Vous pouvez le faire comme xxx


1 commentaires

J'ai mis à jour la question.



0
votes

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;


2 commentaires

@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.



0
votes

Vous pouvez annuler ces colonnes de cette façon: xxx

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 ).


0 commentaires

0
votes

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. xxx


0 commentaires