2017-05-13 68 views
0

我試圖將數據從DNN數據庫導出到新系統,所以我試圖將DNN數據首先轉換爲更合乎邏輯的形式......但我無法得到我的代碼工作。來自DNN用戶數據的SQL數據透視數據

任何人都可以看到什麼是錯的?

我得到的錯誤建議第1行中的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;