2016-10-12 3 views
0

Ich verwende SQL Server 2014 RTM Developer Edition. Ich verwende meine Abfrage in SSMS und nicht in SSIS. Ich habe so viele NULL-Werte in der Tabelle, die ich in meiner UNPIVOT-Funktion verwende. Und nach Unpivot sehe ich diese Zeilen nicht zu Spalten wegen NULL.Wenn ich @NULL verwende, dann sehe ich alle Daten richtig.Unpivot null wird leere Zeichenfolge SQL Server 2014

So fand ich einige Hotfix von Microsoft für SSIS (nicht für SSMS-Problem). https://support.microsoft.com/en-us/kb/3058512 Anstatt diesen Hotfix anzuwenden, habe ich SQL 2014 SP2 installiert und Computer neu gestartet. Kein Unterschied.

Dann habe ich kumulatives Update 1 für SQL Server 2014 SP2 installiert und immer noch dasselbe. Warum passiert dies?

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) 

In meiner opd_Scholar Tabelle habe ich 400 Spalten und ich brauche sie als Zeilen zu konvertieren. Und ich habe so viele NULL-Werte in der Tabelle opd_scholar. Aber wenn ich obigen Code verwende, um diese Zeilen in Spalten zu konvertieren, zeigt es nicht diese Werte, die NULL hat.

Antwort

0

Nicht sicher, wonach Sie fragen. Aber versuchen isnull(YOURVALUE,'')

+0

Danke furin aber das wird nu, lls zu leeren Saiten ersetzen ?? Ich bevorzuge NULL als NULL. – nick

+0

Auch wenn ich für unseren Vorschlag gehe, ziehe ich Spaltennamen dynamisch an so wie überprüfe ich das für jeden einzelnen Spaltenwert ?? – nick

+0

Okay, ich dachte mir das jetzt aber neu aus, – nick

0

Dank fand ich NULL 0 Lösung aber

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 

Aber ich habe mehr als 400 Spalten und @query ist varchar (max) noch sie alle Tanne in das nicht. Wie spalte ich das ??