2017-05-13 9 views
0

DNNデータベースから新しいシステムにデータをエクスポートしようとしています。そのため、最初にDNNデータをより論理的なフォームにピボットしようとしていましたが、作業するコード。DNNユーザーデータからのSQLピボットデータ

誰かが間違っていると見ることができますか?

最初の行の2つのフィールドに無効な列名が表示されるというエラーが表示されますか?

SELECT [Rownumber], [columnheading] 

FROM 
(
    SELECT 

    udd1.UserDefinedRowId as Rownumber, 
    udf1.FieldTitle as columnheading, 
    convert(nvarchar(max),udd1.FieldValue) as newFieldValue 
    FROM UserDefinedData udd1 

    INNER JOIN UserDefinedFields udf1 
    ON udf1.UserDefinedFieldId = udd1.UserDefinedFieldId 

    INNER JOIN UserDefinedRows udr1 
    ON udr1.UserDefinedRowId = udd1.UserDefinedRowId 
    WHERE udr1.ModuleId = 3806 

) AS UserData 

PIVOT 

(
    MAX(Rownumber) 

    FOR columnheading IN ("Evidence", "Contact", "Action Required") 

) AS PivotTable; 
+0

あなたは、ピボットを使用する場合フィールドの値を列に変更しています。ピボットに使用しているのと同じフィールドを選択しても機能しません。しかし、外側のクエリで 'select *'を使うことができます。 – LukStorms

答えて

0

それが最大の列に移動して選択しなければならないので、私は、あなたが探しているあなたのピボット出力はnewfieldvalueのためだと思う以下のようにリストの列である必要があります:

SELECT [Rownumber], [Evidence], [Contact], [Action Required] 
FROM 
(
    SELECT 

    udd1.UserDefinedRowId as Rownumber, 
    udf1.FieldTitle as columnheading, 
    convert(nvarchar(max),udd1.FieldValue) as newFieldValue 
    FROM UserDefinedData udd1 

    INNER JOIN UserDefinedFields udf1 
    ON udf1.UserDefinedFieldId = udd1.UserDefinedFieldId 

    INNER JOIN UserDefinedRows udr1 
    ON udr1.UserDefinedRowId = udd1.UserDefinedRowId 
    WHERE udr1.ModuleId = 3806 

) AS UserData 
PIVOT 
(
    MAX(newFieldValue) 
    FOR columnheading IN ([Evidence], [Contact], [Action Required]) 
) AS PivotTable; 
関連する問題