【发布时间】:2017-08-29 04:52:00
【问题描述】:
我有一个这种形式的表格(这只是部分视图,表格包含更多列):
| USER | date_of | duration |
|----------|----------------|----------|
| John | 01.08.2017 | 5 |
| Anna | 01.08.2017 | 6 |
| John | 03.08.2017 | 10 |
| Anna | 05.08.2017 | 7 |
| Eugene | 30.08.2017 | 16 |
我需要一个查询(选择),它将以以下形式返回数据:
|USER | 01| 02| 03| 04| 05| 06| ... | 29| 30| 31|Total|Count|
|--------|---|---|---|---|---|---|-----|---|---|---|-----|-----|
|Anna | 6| | | | 7| | | | | | 13 | 2 |
|John | 5| | 10| | | | | | | | 15 | 1 |
|Eugene | | | | | | | | | 16| | 16 | 1 |
因此,我需要在 01..31 列(一个月中的某天,2 月 28/29 日,8 月 31 日等)中填写时间表,在空天时为空,计算每个时间的总和“总计”列中的用户并将持续时间超过 5 天的天数计入“计数”列。 在完整版中,查询会复杂得多,但现在我需要从上面描述的开始。
【问题讨论】:
-
好的,你试过什么?没有人会为你写这篇文章。
-
安娜和安一样吗?
-
安 = 安娜,对不起。更正
-
您可以使用 Oracle 的
pivot功能,如此处所示 stackoverflow.com/questions/7730111/… -
oracle 文档中的另一个很好的例子:using pivot and unpivot