【问题标题】:How do I PIVOT in SQL Server with dynamic columns, values, and datatypes?如何在 SQL Server 中使用动态列、值和数据类型进行 PIVOT?
【发布时间】:2012-01-21 00:32:34
【问题描述】:

我有一个存储数据的表,如下所示:

ID ListId ModuleId RecordId NValue CValue LValue Caption RowId 8cb5f604 c07cea6f 24cb218c _01F15T1LJ 2.00000 假线 # 24cb218c c023fe9e 2dcd56fe 24cb218c _01F15T1LJ 红色假标签 24cb218c 4a74bd46 c07cea6f 24cb218c _01F15T1LJ 1.00000 假线 # 24cb218d 30cae2cf 2dcd56fe 24cb218c _01F15T1LJ 白色假标签 24cb218d

我需要在 RowId 上旋转日期并显示如下结果:

RowId 电线 # 标签 24cb218d 1.00000 白色 24cb218c 2.00000 红色

我不知道如何强制 PIVOT 以这种方式工作。

表格中的数据、列数和顺序都可供最终用户编辑。是否有可能有效地做到这一点?如果有,怎么做。

【问题讨论】:

    标签: sql sql-server dynamic pivot


    【解决方案1】:

    您可以使用动态 TSQL 来实现这一点(记得使用 QUOTENAME 以避免 SQL 注入攻击):

    [强制引用The Curse and Blessings of Dynamic SQL]

    【讨论】:

    • 我想我必须使用 CASE WHEN 才能将正确的列拉入 PIVOT?最多有 4 列可以保存该值(取决于数据类型)。
    猜你喜欢
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2020-10-19
    相关资源
    最近更新 更多