我在兩個單獨的數據庫中有兩個表,我試圖合併在一起以創建資產及其讀數列表。我想出了以下查詢:列的類型與UNPIVOT列表中指定的其他列的類型衝突
use [db1]
DECLARE @colsUnpivot AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @colsUnpivot
= stuff((select ','+quotename(C.name)
FROM sys.columns c
where c.object_id = OBJECT_ID('db1.dbo.RUNTIME') and c.name != 'timestamp'
for xml path('')), 1, 1, '')
use [db2]
set @query = '
SELECT
a.[ID],
a.[ASSETCLASS],
a.[ASSETID],
a.[READINGNAME],
CONVERT(nvarchar(max), a.[SCADA_TAG]) as [SCADA_TAG],
b.timestamp AS [READINGDATE],
b.scada_value AS [READING]
/*,[PROCESSED]*/ FROM [scada].[PREPROCESSING] a
LEFT JOIN (SELECT
[timestamp],
CONVERT(nvarchar(max), [SCADA_TAG]) as [SCADA_TAG],
[SCADA_VALUE]
FROM [db1].[dbo].[RUNTIME] UNPIVOT (SCADA_VALUE FOR SCADA_TAG IN ('+ @colsUnpivot +')) u) b
ON a.scada_tag = b.scada_tag'
exec sp_executesql @query;
但是,運行查詢時,我收到以下錯誤信息:
當我看着提到列的數據類型,db1數據庫對於我試圖選擇的列有兩種不同的數據類型 - float和int。我試圖將這些列名稱從db1放入db2的列是數據類型nvarchar(100)。我已經嘗試投射和轉換SCADA_TAG沒有成功。我剛剛從另一個開發人員繼承了這個SQL集成,並且因爲pivot和unpivot功能而生鏽。任何幫助或建議將不勝感激。
如果您對列中的所有行進行反轉 - 必須是相同的數據類型。 – gofr1