使用vertica转置表格

问题描述 投票:0回答:1

最近我遇到了vertica这是一个柱状数据库,我需要转置基础表。这就是将所有列转换为行。

+--------+--------+------------+------------+
| emp_no | salary | from_date  | to_date    |
+--------+--------+------------+------------+
|  10001 |  60117 | 1986-06-26 | 1987-06-26 |
|  10001 |  62102 | 1987-06-26 | 1988-06-25 |
|  10001 |  66074 | 1988-06-25 | 1989-06-25 |
|  10001 |  66596 | 1989-06-25 | 1990-06-25 |
|  10001 |  66961 | 1990-06-25 | 1991-06-25 |
|  10001 |  71046 | 1991-06-25 | 1992-06-24 |
|  10001 |  74333 | 1992-06-24 | 1993-06-24 |
|  10001 |  75286 | 1993-06-24 | 1994-06-24 |
|  10001 |  75994 | 1994-06-24 | 1995-06-24 |
|  10001 |  76884 | 1995-06-24 | 1996-06-23 |
|  10001 |  80013 | 1996-06-23 | 1997-06-23 |
|  10001 |  81025 | 1997-06-23 | 1998-06-23 |
|  10001 |  81097 | 1998-06-23 | 1999-06-23 |
|  10001 |  84917 | 1999-06-23 | 2000-06-22 |
|  10001 |  85112 | 2000-06-22 | 2001-06-22 |
|  10001 |  85097 | 2001-06-22 | 2002-06-22 |
|  10001 |  88958 | 2002-06-22 | 9999-01-01 |
|  10002 |  65828 | 1996-08-03 | 1997-08-03 |
|  10002 |  65909 | 1997-08-03 | 1998-08-03 |
|  10002 |  67534 | 1998-08-03 | 1999-08-03 |
|  10002 |  69366 | 1999-08-03 | 2000-08-02 |
|  10002 |  71963 | 2000-08-02 | 2001-08-02 |
|  10002 |  72527 | 2001-08-02 | 9999-01-01 |
|  10003 |  40006 | 1995-12-03 | 1996-12-02 |
|  10003 |  43616 | 1996-12-02 | 1997-12-02 |
|  10003 |  43466 | 1997-12-02 | 1998-12-02 |
|  10003 |  43636 | 1998-12-02 | 1999-12-02 |
|  10003 |  43478 | 1999-12-02 | 2000-12-01 |
|  10003 |  43699 | 2000-12-01 | 2001-12-01 |
|  10003 |  43311 | 2001-12-01 | 9999-01-01 |
+--------+--------+------------+------------+

必须注意以下几点:

  1. 在这种情况下,不能使用case
  2. 如果需要,可以使用动态查询。

我面临的问题是我无法理解如何迭代地将多个列条目转换为行。

sql vertica
1个回答
1
投票

你将无法做到这一点。即使Vertica允许比其他关系数据库更多的列,例如1600而不是Oracle的1024。

如果每个emp_no平均有15个版本,那么您将拥有11名员工的可能列。

您能否建议您之后使用哪种数据处理?很可能还有其他方法可以将所有措施结合在一起......

© www.soinside.com 2019 - 2024. All rights reserved.