Colonne en conflit avec l'autre type de colonnes dans la liste unpivot
Im pivotante sys.[views]
en paires clé-valeur à comparer avec les valeurs sur un autre serveur pour l'analyse de l'uniformité. Im en cours d'exécution dans une question qui renvoie l'erreur.
Msg 8167, Niveau 16, État 1, Ligne 51
Le type de la colonne "type" en conflit avec l'autre type de colonnes spécifiées dans la UNPIVOT liste.
Requête:
SELECT
sourceUnpivoted.idServer,
sourceUnpivoted.sourceServerName,
sourceUnpivoted.name,
sourceUnpivoted.columnName,
sourceUnpivoted.columnValue
FROM (
SELECT
CAST('1' AS VARCHAR(255)) AS idServer,
CAST('thisOne' AS VARCHAR(255)) AS sourceServerName,
CAST('theDatabase' AS VARCHAR(255)) AS sourceDatabaseName,
CAST(name AS VARCHAR(255)) AS name,
CAST(object_id AS VARCHAR(255)) AS object_id,
CAST(principal_id AS VARCHAR(255)) AS principal_id,
CAST(schema_id AS VARCHAR(255)) AS schema_id,
CAST(parent_object_id AS VARCHAR(255)) AS parent_object_id,
CAST(type AS VARCHAR(255)) AS type,
CAST(type_desc AS VARCHAR(255)) AS type_desc,
CAST(create_date AS VARCHAR(255)) AS create_date,
CAST(lock_escalation_desc AS VARCHAR(255)) AS lock_escalation_desc
...
FROM noc_test.dbo.stage_sysTables
) AS databaseTables
UNPIVOT (
columnValue FOR columnName IN (
object_id,
principal_id,
schema_id,
parent_object_id,
type,
type_desc,
create_date,
lock_escalation_desc
)
) AS sourceUnpivoted
Pourquoi n'est-ce pas comme [type]
,[type_desc]
,[lock_escalation_desc]
???
Ive a essayé aussi de CONVERT(VARCHAR(255),type) AS type
- Avez-vous ajouter tous les
<br>
s à votre question à la main? Si oui, n'avez-vous pas atteindre un point où vous avez pensé "Il y a une meilleure façon"? Si vous êtes à poster du code, veuillez mettre en évidence le bloc, et a frappé la{}
code de mise en forme de bouton, il conserve les sauts de ligne, et ajoute la coloration syntaxique ainsi. - nice malade donne un essai la prochaine fois.
Vous devez vous connecter pour publier un commentaire.
C'est en fait un classement problème. Je peux le résoudre en changeant ces lignes:
Le problème est que
name
compilées dans leLatin1_General_CI_AS
, tandis que les 3 autres colonnes que vous avez mentionnés sont compilées dans leLatin1_General_CI_AS_KS_WS
(Au moins, sur ma machine, je ne suis pas sûr de ce que ce serait comme sur un serveur/base de données avec les différents classement par défaut).C'est l'une des solution pour ce type d'erreur
1: créez ce tableau
2: Ensuite, insérez
3: exécution de ce script, vous obtenez le message d'erreur
Msg 8167, Niveau 16, État 1, Ligne 3
Le type de colonne "Nom" en conflit avec l'autre type de colonnes spécifiées dans la UNPIVOT liste.
4: la solution est que vous devez utiliser une sous-requête pour premier casting de la colonne Lastname, pour avoir la même longueur que le Prénom
Le PIVOT/UNPIVOT clause est sensible à la norme ANSI Rembourrage Statut de la colonne (clic droit -> propriétés dans SSMS) ainsi que le type, la taille et le classement. Essayez de spécifier SET ANSI_PADDING on|OFF dans la session avant d'ajouter ou de recréer la colonne en question afin qu'il corresponde à les autres dans le PIVOT/clause UNPIVOT.
Couru dans ce même message d'erreur et je viens de faire toutes les colonnes dans le tableau du même type de données - j'ai eu un mélange de
int
,varchar
,nvarchar
de différentes longueurs. Une fois que j'ai converti toutes les colonnes dans ma table pour le même typenvarchar(255)
il a parfaitement fonctionné.J'ai eu le même problème. Il fixe par un clic droit sur l'en-tête de colonne et en sélectionnant modifier le type "à l'aide des paramètres régionaux". Voir ci-joint capture d'écran
Un: