我有一个订单表,记录如下:
UPDATE_DATE ORDER_ID FIELD_NAME FIELD_VALUE
17-07-20 300009086 Order Stage Shipped
15-07-20 300009086 Order Stage Provisioned
14-07-20 300009086 Order Stage Order Created
14-07-20 300009086 Customer Name XYZ Corp
可见,对于单个订单(300009086),我们在表中有多条记录,每条记录对应于订单的每个特定属性。同样可以看到,当一个特定的属性发生变化时(例如,上面的示例数据中的order stage),我们会在表中创建一个额外的记录。
现在,我有一个目标表,看起来像下面给出的表,它包含如下所示的记录-
UPDATE_DATE ORDER_ID FIELD_NAME OLD_FIELD_VAL NEW_FIELD_VALUE
17-07-20 300009086 Order Stage Provisioned Shipped
15-07-20 300009086 Order Stage Order Created Provisioned
14-07-20 300009086 Order Stage - Order Created
14-07-20 300009086 Customer Name - XYZ Corp
因此,目标表包含两个不同的列,旧值和新值,我们需要将源中的当前值和前一个值记录转换为目标表中的一行,以便更容易对这些数据进行报告。
因此,我想得到一些建议,比如编写sql来实现这种转置的最佳方法是什么。如果有人能给点建议我会很感激的。提前谢谢。
1条答案
按热度按时间i5desfxk1#
你可以用
lag()
: