SQL Server - Inclure NULL en utilisant UNPIVOT
UNPIVOT ne reviendra pas Nuls, mais j'en ai besoin dans une requête de comparaison. Je suis en train d'essayer d'éviter d'utiliser la fonction ISNULL l'exemple suivant (Parce que dans la vraie sql il y a plus de 100 champs.:
Select ID, theValue, column_name
From
(select ID,
ISNULL(CAST([TheColumnToCompare] AS VarChar(1000)), '') as TheColumnToCompare
from MyView
where The_Date = '04/30/2009'
) MA
UNPIVOT
(theValue FOR column_name IN
([TheColumnToCompare])
) AS unpvt
Des alternatives?
source d'informationauteur JeffO
Vous devez vous connecter pour publier un commentaire.
C'est une vraie douleur. Vous devez passer avant de le
UNPIVOT
car il n'y a pas de ligne de produits pourISNULL()
pour fonctionner sur - la génération de code est votre ami ici.J'ai le problème sur
PIVOT
. Lignes manquantes transformer enNULL
que vous avez de l'envelopper dansISNULL()
tout le chemin à travers la ligne si les valeurs manquantes sont les mêmes que0.0
par exemple.De préserver les valeurs Null, utilisez la CROIX REJOINDRE ... CAS:
Au lieu de:
Un éditeur de texte avec la colonne, le mode telles requêtes plus facile à écrire. UltraEdit a, par Emacs. Dans Emacs, il est appelé rectangulaire modifier.
Vous pourriez avoir besoin de l'écrire pour 100 colonnes.
ou, dans SQLServer 2008 de plus court chemin:
Je rencontre le même problème, à l'Aide de la CROIX-APPLIQUER (Sql Server 2005 et versions Ultérieures) au Lieu de Unpivot Résolu le problème. J'ai trouvé la solution Basée sur cet Article Une Alternative (Mieux?) Méthode pour UNPIVOT
et j'ai pris l'exemple suivant, afin de démontrer que la CROIX s'APPLIQUENT PAS Ignorer les valeurs Null comme Unpivot .
J'ai trouvé externe gauche rejoindre la UNPIVOT résultat pour la liste complète des champs, idéalement tiré de INFORMATION_SCHEMA, pour être une réponse pratique à ce problème dans certains contextes.
de sortie ressemble à ceci:
L'aide de SQL dynamique et FUSIONNENT, j'ai résolu le problème comme ceci:
ISNULL est la moitié de la réponse. Utilisation NULLIF de traduire NULL. E. g.
J'utilise ici "0Null" comme ma valeur intermédiaire. Vous pouvez l'utiliser comme vous le souhaitez. Cependant, tu risques de collision avec la saisie de l'utilisateur si vous choisissez quelque chose dans le monde réel comme "Null". Poubelle fonctionne très bien "!@#34())0" mais peut-être plus de confusion à l'avenir des codeurs. Je suis sûr que vous obtenez l'image.