将 UNPIVOT 从 SQL Server 转换为 Redshift

Posted

技术标签:

【中文标题】将 UNPIVOT 从 SQL Server 转换为 Redshift【英文标题】:Convert UNPIVOT from SQL Server to Redshift 【发布时间】:2018-09-10 08:24:46 【问题描述】:

我有一个来自 SQL Server 的脚本,我需要将其转换为 Redshift

这是脚本的一部分,我遇到了麻烦

    UNPIVOT
(
SeatCharge
FOR Description IN (
        PM_Core,
        PM_RCM,
        PM_Advanced_RCM,
        PM_Payroll,
        PM_DXM,
        PM_Messaging,
        PM_Tasks,
        Clinical_Core,
        Clinical_Data_Collection,
        Clinical_Auditing_Tools,
        Clinical_Group_Sessions,
        Clinical_ABC_Data,
        Clinical_AGA,
        LMS_Core,
        HRIS_PTO,
        LMS_Course_Groups,
        PM_Reach_Me,
        PM_Redshift,
        HRIS_Benefits,
        HRIS_Assets)
)u

如何正确地将其转换为红移?

【问题讨论】:

你为什么要减分? 你必须使用 case when 来写 【参考方案1】:

您可以尝试在 amazon-redshift

中使用union all 来制作UNPIVOT
SELECT  PM_Core SeatCharge
FROM yourTable
union all
SELECT PM_RCM 
FROM yourTable
union all
SELECT PM_Advanced_RCM 
FROM yourTable
union all 
SELECT PM_Payroll 
FROM yourTable
union all 
SELECT PM_DXM 
FROM yourTable
....

注意

当您在做UNPIVOT 时需要确保UNPIVOT 的列数据类型相同。

【讨论】:

以上是关于将 UNPIVOT 从 SQL Server 转换为 Redshift的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server中行列转换 Pivot UnPivot

SQL Server中行列转换 Pivot UnPivot

没有聚合的 sql server 中的 UNPIVOT

SQL Server 使用 Pivot 和 UnPivot 实现行列转换

SQL Server 使用 Pivot 和 UnPivot 实现行列转换

使用 UNPIVOT 将代码从 sql 重写为 redshift