2017-12-20 8 views
0

MY QUERYに指定された他の列の型の列「DOB」紛争の種類、エラー:単純に列に行を変換するUNPIVOTリスト

SELECT 
    ColumnName, 
    value 
FROM (SELECT 
    id [ID], 
    firstname [First Name], 
    lastname [Last Name], 
    dob [DOB], 
    sex [Gender] 
FROM client 
WHERE id = '11') d 
UNPIVOT 
(
Value FOR 
ColumnName IN ([ID], [First Name], [Last Name], [DOB], [Gender]) 
) unpiv; 

しかし、それはエラーを示します。

列「DOB」のタイプは、UNPIVOTリストで指定された他の列のタイプと競合します。その結果、

答えて

1

は、すべての値を使用して新しい派生列を構築し、複数の行のすべての列を戻すことが、あなたはタイプが一緒に収まることを、確認する必要があります。

あなたはあなたのマシンのデフォルト設定に変換されますCAST

SELECT 
    ColumnName, 
    value 
FROM (SELECT 
    CAST(id AS NVARCHAR(MAX)) [ID], 
    CAST(firstname AS NVARCHAR(MAX)) [First Name], 
    CAST(lastname AS NVARCHAR(MAX)) [Last Name], 
    CAST(dob AS NVARCHAR(MAX)) [DOB], 
    CAST(sex AS NVARCHAR(MAX)) [Gender] 
FROM client 
WHERE id = '11') d 
UNPIVOT 
(
Value FOR 
ColumnName IN ([ID], [First Name], [Last Name], [DOB], [Gender]) 
) unpiv; 

DOBにすべての列をラップすることができます。 CONVERTを使用すると、指定した日付/時刻形式を適用することができます。

関連する問題