2016-07-29 6 views
1

を使用して動的な列を持つテーブルを作成し、私は私は2つのことを行うには、運なしに、しようとしている以下のTSQLありますPIVOTコマンド

  1. を一時テーブルに0
  2. 出力にNULL値を変換するに私は 他の操作に使用できます。

結果の一部がで捕獲された添付:私は両方に作る動的な列を一時テーブルに結果をキャプチャし、ヌルを排除する必要がありますどのような変更enter image description here

?おかげさまで

DECLARE @cols NVARCHAR(MAX), @stmt NVARCHAR(MAX), @ParmDefinition NVARCHAR(MAX), @PVT3 NVARCHAR(MAX); 

--Get distinct values of the PIVOT Column 
SELECT @cols = ISNULL(@cols+', ', '')+'['+T.Cat+']' 
FROM 
(
    SELECT TOP 100 CONVERT(VARCHAR(2), IncomeCategoryID) AS Cat 
    FROM Payroll.lu_IncomeCategory 
    WHERE IsAllowance <> 0 
      AND IncomeCategoryID IN 
    (
     SELECT DISTINCT 
       IncomeCategoryID 
     FROM Payroll.Income 
     WHERE IncomeCategoryID <> 0 
    ) 
    ORDER BY IncomeCategoryID 
) AS T; 

SELECT @stmt = N' 
    SELECT * 
    FROM (SELECT EmployeeID,IncomeCategoryID, 
    SUM(RateAmount) [Amount] 
FROM Payroll.Income 
GROUP BY EmployeeID, IncomeCategoryID) as PayData 
     pivot 
     (
      SUM([Amount]) 
      FOR IncomeCategoryID IN ('[email protected]+') 
     ) as IncomePivot'; 
EXEC sp_executesql 
    @stmt = @stmt; 

答えて

0

完了。
最初の課題については、このフォーラムの前の投稿の1つで@NullToZeroColsの例を使用した後で動作しました。 2回目の挑戦では、TSQLコマンドを実行するたびに検索して削除できるNon-Temporaryテーブルに最終的に選択されました。以前に作成した一時テーブルのスコープがPIVOTコマンドの実行後に使用できないことが分かった。