Для SQL Server 2012:SQL Pivot для одного столбца для нескольких таблиц?
Я пытаюсь нормализовать свои данные в первую нормальную форму через PIVOT, а затем сохранить результаты в таблицу. Мне нужна помощь на PIVOT и сохранение ее на столе.
Исходные данные - это ежедневная или еженедельная генерация .xls, затем я вставляю ее в таблицу temprmi$
.
Структура необработанных данных ниже - TNUM - уникальный номер для всей компании. Есть более быстрые тексты, чем только эти три (всего 64).
Таблица: temprmi$
TNUM EmpID Prompt Text TData
1 e001 fixture 506
1 e011 sheet F1234567
1 f001 cweld abcDFG
2 f031 fixture 510
2 f032 sheet H7654321
2 e001 cweld DFGabc
Я пытался использовать SQL PIVOT
, чтобы получить его в одну таблицу, которая потом может вспыхнуть на несколько (как определено ниже), но я не быть успешным.
То, что я хотел бы получить его, чтобы быть:
Крепеж Таблица:
TNUM Fixture EMPID
1 506 e001
2 510 f031
лист таблице:
TNUM Sheet EMPID
1 F1234567 e011
2 H7654321 f032
Любая помощь будет оценена.
Я добавил свой запрос PIVOT
для справки, но он не работает. (Выход ниже, а
DECLARE @ColumnName AS NVARCHAR(MAX)
DECLARE @DynamicPivotQuery AS nvarchar(max)
DECLARE @DynamicPivotQuery2 AS nvarchar(max)
DECLARE @DynamicPivotQuery3 AS nvarchar(max)
--Get distinct values of the PIVOT Column
SELECT @ColumnName= ISNULL(@ColumnName + ',','')
+ QUOTENAME([prompt text])
FROM (SELECT DISTINCT [prompt text] FROM temprmi$) AS Prompts
--select @ColumnName
SET @DynamicPivotQuery ='SELECT [trav num],[empid],' + @ColumnName
SET @DynamicPivotQuery2=' FROM [temprmi$]
PIVOT(min([TData])
FOR [Prompt Text] IN (' + @ColumnName + ')) AS PVTTable'
--select (@[email protected])
set @[email protected][email protected]
EXEC sp_executesql @DynamicPivotQuery3
select @DynamicPivotQuery3
Выход:...
TNUM EmpID Fixture sheet
1 null 506 null
1 e001 null null
1 null null F1234567
2 null 510 null
2 e001 null null
2 null null H7654321
Это одноразовая задача миграции? – Amit
Нет - Сырые данные поступают ежедневно/еженедельно, так как объем .xls и I вставляет его в таблицу temprmi $. Обновлен вопрос выше, чтобы быть более четким. – TangoAlee
Исправлены ли 64 таблицы?Вам нужны отдельные инструкции 'INSERT', независимо от того, как вы это делаете, может быть проще иметь список в вспомогательной таблице, а затем построить простой динамический запрос вставки вокруг этого – Amit