【发布时间】:2011-11-25 03:43:18
【问题描述】:
我在弄清楚如何构建一系列 SQL 语句以将我拥有的一些数据拆分为每年的数据时遇到了一些麻烦。在这么多年中,有 n 个项目在一组天的记录数量。这是我拥有的主要数据的一个小示例布局。
|========|==============|===========|
| Name | Date | Quantity |
|========|==============|===========|
1 | AAAAA | 10-DEC-2008 | 5 |
2 | AAAAA | 11-DEC-2008 | 2 |
3 | AAAAA | 12-DEC-2008 | 0 |
4 | AAAAA | 09-DEC-2009 | 3 |
5 | AAAAA | 10-DEC-2009 | 2 |
6 | AAAAA | 11-DEC-2009 | 3 |
7 | BBBBB | 10-DEC-2008 | 5 |
8 | BBBBB | 11-DEC-2008 | 2 |
9 | BBBBB | 12-DEC-2008 | 0 |
10 | BBBBB | 09-DEC-2009 | 3 |
11 | BBBBB | 10-DEC-2009 | 1 |
12 | BBBBB | 11-DEC-2009 | 0 |
|========|==============|===========|
我需要把它转换成一个表格。
|========|==============|===============|===============|
| Name | Date | Quantity 2008 | Quantity 2009 |
|========|==============|===============|===============|
1 | AAAAA | 09-DEC | | 3 |
2 | AAAAA | 10-DEC | 5 | 2 |
3 | AAAAA | 11-DEC | 2 | 3 |
4 | AAAAA | 12-DEC | 0 | |
5 | BBBBB | 09-DEC | | 3 |
6 | BBBBB | 10-DEC | 5 | 1 |
7 | BBBBB | 11-DEC | 2 | 0 |
8 | BBBBB | 12-DEC | 0 | |
|========|==============|===============|===============|
应该假设数据库中有数千个命名项目,并且每年记录的开始日期会有所不同,例如,2010 年 12 月 6 日和 2009 年 12 月 5 日。
希望有人能提供帮助。
【问题讨论】:
-
无论何时要将列转换为行或反之亦然,请查看 pivot/unpivot(在 11g 上显式,或在早期版本中模拟显式函数的“技术”)。