Если вместо этого вы используете APPLY
и VALUES
для отмены разворота данных, вы не получите эту ошибку. В любом случае использование этих инструментов более универсально, чем оператор UNPIVOT
, поэтому я лично предпочитаю их:
SELECT T.ID,
V.Label,
V.[Value]
FROM dbo.Test T
CROSS APPLY (VALUES('Name',T.Name),
('Address',T.Address))V(Label,Value);
Если у вас есть столбцы не строкового типа, вам нужно будет явно преобразовать их (возможно, с помощью код стиля):
SELECT T.ID,
V.Label,
V.[Value]
FROM dbo.Test T
CROSS APPLY (VALUES('Name',T.Name),
('Address',T.Address),
('SomeDate',CONVERT(nvarchar(10),T.SomeDate,112)),
('SomeInt',CONVERT(nvarchar(5),T.SomeInt)))V(Label,Value);