자산 목록 및 해당 값을 만들기 위해 병합하려는 두 개의 테이블이 별도의 데이터베이스에 있습니다. 쿼리를 실행할 때 다음과 같은 오류 메시지를 수신하고있는 그러나열 유형이 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 데이터베이스에는 select-float 및 int를 시도하는 열에 대한 두 개의 다른 데이터 유형이 있습니다. 이 열 이름을 db1에서 db2로 가져 오려고하는 열의 데이터 형식은 nvarchar (100)입니다. SCADA_TAG를 캐스팅하고 변환하려고 시도했지만 성공하지 못했습니다. 난 그냥 다른 SQL 에서이 SQL 통합을 상속 및 피벗 및 unpivot 기능 녹슨거야. 어떤 도움이나 조언이라도 대단히 감사하겠습니다.
열의 모든 행을 언 베이킹하는 경우 - 동일한 데이터 유형이어야합니다. – gofr1