Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Unpivot  [new]
SashPavlov
Member

Откуда:
Сообщений: 5
Здравстуйте

Пытаюсь выполнить запрос с UNPIVOT

автор
DECLARE @PID INT =777
SELECT [Параметр], [Значение]
FROM
(SELECT
Name
,CAST(Size AS NVARCHAR(50)) AS Size
,CAST(Weight AS NVARCHAR(50)) AS Weight
,CAST(Color AS NVARCHAR(50)) AS Color
FROM AdventureWorks2008R2.Production.Product
WHERE ProductID = 777) AS Src
UNPIVOT
(
[Значение] FOR [Параметр] IN (Name, Size, Weight, Color)
) AS Upvt



и получаю следующую ошибку

автор
Msg 8167, Level 16, State 1, Line 13
The type of column "Weight" conflicts with the type of other columns specified in the UNPIVOT list.


Помогите разобраться в чем проблема
17 фев 13, 15:45    [13938701]     Ответить | Цитировать Сообщить модератору
 Re: Unpivot  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
Я только что выполнил Ваш запрос, он работает, указанная ошибка не наблюдается
Правда, у меня AdventureWorks2008 а не AdventureWorks2008R2
17 фев 13, 21:39    [13939733]     Ответить | Цитировать Сообщить модератору
 Re: Unpivot  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
на AdventureWorks2012 тоже без ошибки выполнилось
17 фев 13, 21:53    [13939769]     Ответить | Цитировать Сообщить модератору
 Re: Unpivot  [new]
Гость333
Member

Откуда:
Сообщений: 3683
SashPavlov,

Скорее всего, вы выполняете запрос из БД, collation которой отличается от SQL_Latin1_General_CP1_CI_AS (т.е. от collation'а столбцов Name, Size и Color). При этом столбец "CAST(Weight AS NVARCHAR(50))" выдаёт строку с параметрами сортировки Database_Default, а остальные столбцы остаются с SQL_Latin1_General_CP1_CI_AS.
USE master;
SELECT DB_NAME() AS Database_Name,
       DATABASEPROPERTYEX(DB_NAME(), 'Collation') AS DB_Collation,
       SQL_VARIANT_PROPERTY(Name, 'Collation') AS Name_Collation,
       SQL_VARIANT_PROPERTY(CAST(Size AS NVARCHAR(50)), 'Collation') AS Size_Collation,
       SQL_VARIANT_PROPERTY(CAST(Weight AS NVARCHAR(50)), 'Collation') AS Weight_Collation,
       SQL_VARIANT_PROPERTY(CAST(Color AS NVARCHAR(50)), 'Collation') AS Color_Collation
FROM AdventureWorks.Production.Product
WHERE ProductID = 777;

USE AdventureWorks2008R2;
SELECT DB_NAME() AS Database_Name,
       DATABASEPROPERTYEX(DB_NAME(), 'Collation') AS DB_Collation,
       SQL_VARIANT_PROPERTY(Name, 'Collation') AS Name_Collation,
       SQL_VARIANT_PROPERTY(CAST(Size AS NVARCHAR(50)), 'Collation') AS Size_Collation,
       SQL_VARIANT_PROPERTY(CAST(Weight AS NVARCHAR(50)), 'Collation') AS Weight_Collation,
       SQL_VARIANT_PROPERTY(CAST(Color AS NVARCHAR(50)), 'Collation') AS Color_Collation
FROM AdventureWorks.Production.Product
WHERE ProductID = 777;

Database_Name DB_Collation Name_Collation Size_Collation Weight_Collation Color_Collation
master Cyrillic_General_CI_AS SQL_Latin1_General_CP1_CI_AS SQL_Latin1_General_CP1_CI_AS Cyrillic_General_CI_AS SQL_Latin1_General_CP1_CI_AS

Database_Name DB_Collation Name_Collation Size_Collation Weight_Collation Color_Collation
AdventureWorks2008R2 SQL_Latin1_General_CP1_CI_AS SQL_Latin1_General_CP1_CI_AS SQL_Latin1_General_CP1_CI_AS SQL_Latin1_General_CP1_CI_AS SQL_Latin1_General_CP1_CI_AS

Поэтому либо выполняйте ваш запрос непосредственно в AdventureWorks2008R2, либо приводите столбцы к одинаковому collation'у.
18 фев 13, 09:53    [13940994]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить