2016-10-12 1 views
0

J'utilise SQL Server 2014 RTM Developer Edition. J'utilise ma requête dans SSMS et non dans SSIS. J'ai tellement de valeurs NULL dans la table que j'utilise dans ma fonction UNPIVOT.Et après Unpivot, je ne vois pas ces lignes deviennent des colonnes à cause de NULLs.If j'utilise @NULL alors je vois toutes les données correctement.unpivot null devient une chaîne vide SQL Server 2014

J'ai donc trouvé un correctif de microsoft pour SSIS (pas pour le problème SSMS). Au lieu d'appliquer ce correctif, j'ai installé SQL 2014 SP2 et redémarré la machine au lieu d'appliquer ce correctif à https://support.microsoft.com/en-us/kb/3058512 Aucune différence.

Puis j'ai installé la mise à jour cumulative 1 pour SQL Server 2014 SP2 et toujours la même chose. Pourquoi cela arrive-t-il?

DECLARE @colsUnpivot NVARCHAR(MAX) 
     ,@query VARCHAR(MAX) 
     ,@Table_name NVarchar(500) 
     ,@fiscal_year Varchar(4) 

     SET @Table_name = 'opd_scholar' 
     SET @fiscal_year = '2015' 

     set @colsUnPivot = STUFF((SELECT ',' + QUOTENAME(code_name) from opd_lkp_scholar t Where fiscal_year = 2015 AND code_name NOT IN ('UNITID','Institution','City','State','Zip') FOR XML PATH(''), TYPE   ).value('.', 'NVARCHAR(MAX)') ,1,1,'') 
     PRINT @colsUnPivot 

     set @query 
     = ' INSERT INTO opd_scholar_transaction ( unitid,institution,city,state,zip,code_name,lkp_value) 
    SELECT unitid,institution,city,state,zip,code_name,lkp_value 
    FROM 
    (
     SELECT unitid,institution,city,state,zip, '+ @colsUnpivot+' 
     FROM '[email protected]_name+') AS cp 
     UNPIVOT (lkp_value for code_name IN ('[email protected]+') 
     ) AS up' 
     PRINT @Query 
      exec(@query) 

Dans ma table opd_Scholar j'ai 400 colonnes et j'ai besoin de les convertir en lignes. Et j'ai tellement de valeurs NULL dans la table opd_scholar. Mais quand j'utilise le code ci-dessus pour convertir ces lignes en colonnes, il ne montre pas les valeurs qui ont des valeurs NULL.

Répondre

0

Vous ne savez pas exactement ce que vous demandez. Mais essayez isnull(YOURVALUE,'')

+0

Merci furin mais cela remplacera nu, lls pour vider les cordes ?? Je préfère NULL comme NULL. – nick

+0

Même si je vais pour votre suggestion, je tire dynamiquement les noms de colonnes. Comment puis-je vérifier cela pour chaque colonne? – nick

+0

Ok, donc j'ai pensé cela, mais maintenant nouveau problème, – nick

0

Merci, je l'ai trouvé NULL à 0 solution, mais

set @colsUnPivot = STUFF((SELECT ',' + 'ISNULL(' + QUOTENAME(code_name) + ', 0) AS ' + QUOTENAME(code_name) from opd_lkp_scholar t Where fiscal_year = 2015 AND code_name NOT IN ('UNITID','Institution','City','State','Zip') FOR XML     PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'') 
    PRINT @colsUnPivot 

Mais j'ai plus de 400 colonnes et @query est varchar (max) encore tous DonT sapin dans ce. Comment est-ce que je divise ceci ??