我有一個動態數據透視表,它在運行時產生未知數量的列。我試圖清除現有表中的數據,並將查詢結果插入到其中。我遇到的問題是,我不知道表格定義會提前做什麼,因爲它是動態的。在不知道表定義的情況下將動態數據透視表插入到現有表中
這裏是我得到的錯誤:
Msg 213, Level 16, State 7, Line 1 Column name or number of supplied values does not match table definition.
的轉動列是一個日期列可能有1個日期或日期1000+。 如何創建一個與我試圖插入的數據匹配的表定義?
這裏是我的查詢:
DECLARE @colsPivot AS NVARCHAR(MAX),
@colsUnpivot AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @colsPivot = STUFF((SELECT ',' + QUOTENAME(rce.EcoDate)
from PhdRpt.RptCaseEco_542 AS rce
group by rce.EcoDate
order by rce.EcoDate
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
SELECT @colsUnpivot = stuff((SELECT ','+quotename(C.name)
FROM sys.columns AS C
WHERE C.object_id = object_id('PhdRpt.RptCaseEco_542') AND
C.name in ('NDCash', 'DCash')--LIKE '%Cash' or C.Name like 'NetGas'
FOR xml path('')), 1, 1, '')
set @query
= 'select *
--into ##hello
from
(
SELECT
ReportRunCaseId,
col,
EcoDate,
val
FROM PhdRpt.RptCaseEco_542
unpivot
(
val
for col in ('+ @colsunpivot +')
) u
) x1
pivot
(
max(val)
for EcoDate in ('+ @colspivot +')
) p'
truncate table dbo.Table1
insert into dbo.Table1
exec(@query)
謝謝。通過使用「DROP」,我可以清除舊數據並將新數據插入到具有相同名稱的表中。 –