【问题标题】:Converting columns to rows with joined tables in SQL在 SQL 中使用连接表将列转换为行
【发布时间】:2017-03-26 17:23:19
【问题描述】:

我有以下结构:

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

【问题讨论】:

    标签: sql-server grouping rows transpose


    【解决方案1】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多