2016-07-29 4 views
1

У меня есть следующий TSQL, что я пытался, но безуспешно, чтобы сделать 2 вещи с:Создание таблицы с динамическими столбцами с помощью команды PIVOT

  1. конвертировать NULLS в 0
  2. выхода во временную таблицу Я могу использовать для другие операции.

Часть результата захватывается в прилагаемом: 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

Выполнено.
Для первой задачи он работал после использования примера @NullToZeroCols в одном из предыдущих сообщений на этом форуме. Для моей второй задачи я в конечном итоге выбрал Into Non-Temporary таблицу, которую я могу искать и отбрасывать каждый раз, когда выполняю команду TSQL. Я узнал, что область ранее созданной временной таблицы не позволяет мне использовать ее после выполнения команды PIVOT.

 Смежные вопросы

  • Нет связанных вопросов^_^