Скопировать oldtable в базу newTable по результатам запроса сводки? - PullRequest
0 голосов
/ 17 января 2020

У меня есть сводный запрос из сводной таблицы * (динамический c столбцы) *, моя проблема в том, что я хочу скопировать / клонировать сводный результат в new_table. Что я не знаю, как это сделать,

enter image description here Запрос:

DECLARE @cols NVARCHAR(MAX), @query NVARCHAR(MAX);
SET @cols = STUFF((SELECT DISTINCT','+QUOTENAME(c.ReportedDate)
FROM dbo.Activity c FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 1, '');
SELECT @query = 'SELECT * FROM (SELECT  b.Description, CONVERT(VARCHAR(10), reportedDate, 120) as reportedDate,Status 
FROM Activity left join ActivityType b on b.activityTypeId = Activity.ActivityTypeId ) 
AS t PIVOT  (   COUNT(reportedDate)    FOR reportedDate IN( ' + @cols + ' )' + ') AS p ;'
 EXECUTE (@query);

Как достичь моих ожиданий, чтобы получить тот же результат из сводной таблицы в new_table с тем же результатом данных?

1 Ответ

0 голосов
/ 17 января 2020

Вы можете использовать таблицу (или глобальную временную таблицу) для хранения данных с помощью выбора в, чтобы вы могли иметь к ним доступ.

DECLARE @cols NVARCHAR(MAX), @query NVARCHAR(MAX);
SET @cols = STUFF((SELECT DISTINCT','+QUOTENAME(c.ReportedDate)
FROM dbo.Activity c FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 1, '');
SELECT @query = 'SELECT * into ##results FROM (SELECT  b.Description, CONVERT(VARCHAR(10), reportedDate, 120) as reportedDate,Status 
FROM Activity left join ActivityType b on b.activityTypeId = Activity.ActivityTypeId ) 
AS t PIVOT  (   COUNT(reportedDate)    FOR reportedDate IN( ' + @cols + ' )' + ') AS p ;'
  EXECUTE (@query);

SELECT * FROM ##results
...