SQL

2017-03-26 1 views
0

で結合されたテーブルと行に列を変換する私は、次の構造:SQL

WordTemplatesByAssemblyPackage 
[PackageId] [TemplateId] 

WordTemplate 
[TemplateId] [Name] 

WordTemplatePlainDataMappings 
[TemplateId] [UDF01SdtTag] [UDF02SdtTag] [UDF03SdtTag] ... [UDF20SdtTag] 

WordTemplateTableDataMappings 
[TemplateId] [TableContainerSdtTag] [Col01SdtTag] [Col02SdtTag] ... [Col10SdtTag] 

を私は次のクエリを変換するために努力して代わりの私が行に変換したい列を選択してきた

SELECT 
t.Name, 
pd.UDF01SdtTag, 
pd.UDF02SdtTag, 
pd.UDF03SdtTag, 
tpd.TableContainerSdtTag, 
tpd.Col01SdtTag, 
tpd.Col02SdtTag, 
tpd.Col03SdtTag 

FROM 
doc.WordTemplatesByAssemblyPackage AS p 
INNER JOIN doc.WordTemplate AS t ON p.TemplateId = t.TemplateId AND p.TemplateId = t.TemplateId 
LEFT JOIN doc.WordTemplatePlainDataMappings AS pd ON pd.TemplateId = t.TemplateId AND pd.TemplateId = t.TemplateId 
LEFT JOIN doc.WordTemplateTableDataMappings AS tpd ON tpd.TemplateId = t.TemplateId AND tpd.TemplateId = t.TemplateId 
WHERE 
p.PackageId = 3 

私はunpivにしようとしてきたが、私が得るすべては最後に

42000 - [SQL Server]The column 'TemplateId' was specified multiple times for 'unpiv'. 
42000 - [SQL Server]The multi-part identifier "p.TemplateId" could not be bound. 

、私は結果であり、

t.Name  Field     Value 

Template 1 Field 1    Value 
Template 1 Field 2    Value 
Template 1 Table 1 - Field 1  Value 
Template 2 Field 1    Value 
Template 2 Table 1 Field 1  Value 

答えて