Tous, je le tableau suivant appelé Foo
qui est la sortie d'un PIVOT
complexe requêtedynamique clause SQL where
J'ai besoin de supprimer des lignes dans ce tableau qui ont (DB1, DB2, DB3) tous NULL
. Pour ce faire, normalement, nous pourrions utiliser quelque chose comme
DELETE FROM Foo
WHERE [DB1] IS NULL
AND [DB2] IS NULL
AND [DB3] IS NULL;
mais le problème est que ce code est appelé à partir de C# et les colonnes (DB1, DB2, DB3) passera de l'exécution à l'exécution.
Comment est-ce que je peux faire ceci dynamiquement?
Merci pour votre temps.
Édition1. J'ai une autre table Bar
qui contient les colonnes DB#
, donc il est possible d'utiliser cette table SELECT DISTINCT ...
pour obtenir la liste des colonnes dont j'ai besoin dans la clause WHERE
. Cependant, je n'ai jamais fait cela avant et je ne sais pas par où commencer ... Toute aide est appréciée.
Édition2. Je ne peux en aucun cas utiliser C#. Le code C# est un analyseur de SQL et fonctionne avec le fichier .sql donné. Cela doit être fait entièrement en SQL.
Merci pour ça. Cela m'a donné quelques idées, mais il y a toujours la question du nom ici. Comment l'obtenir? Aussi votre sous-chaîne commence à 5, pourquoi? Les longueurs des noms (c'est-à-dire DB1 etc.) sont de longueur variable. Merci pour votre temps. – MoonKnight
la chaîne commence à 5 car elle est construite avec un 'AND' supplémentaire au début. Si vous le souhaitez, vous pouvez mettre ce code dans une procédure stockée et l'appeler ainsi - voir Modifier. Ou voulez-vous dire comment accéder au sql? décommentez simplement la ligne SQL sp_execute. – podiluska
Ce sera dans un SP. Mais le problème demeure, même avec ce que vous avez fourni - comment puis-je obtenir les noms de colonnes dont j'ai besoin. Voir Edit1. Encore une fois, merci pour votre temps. – MoonKnight