【发布时间】:2013-05-24 09:05:18
【问题描述】:
我陷入了一个复杂的问题。我知道它可以通过旋转来解决,但不知道该怎么做。
数据如下:
------------------------------------------------------------------
| user_id | order_id | service | head | coordinatior | contract |
------------------------------------------------------------------
| 1020 | 3 | 105 | 1 | 1 | 1 |
| 364277 | 1 | 105 | 0 | 0 | 0 |
| 364277 | 3 | 105 | 0 | 0 | 0 |
| 367277 | 2 | 3763454 | 1 | 1 | 0 |
| 1020 | 1 | 3764142 | 0 | 1 | 1 |
| 1020 | 2 | 665443 | 0 | 1 | 1 |
------------------------------------------------------------------
这就是我想要的顺序:
| user_id | service1 | head1 | coordinatior1 | contract1 | service2 | head2 | coordinatior2 | contract2 | service3 | head3 | coordinatior3 | contract3 |
--------------------------------------------------------------------------------------------------------------------------------------------------------------
| 1020 | 3764142 | 0 | 1 | 1 | 665443 | 0 | 1 | 1 | 105 | 1 | 1 | 1 |
| 364227 | 105 | 0 | 0 | 0 | 3763454 | 1 | 1 | 0 | 105 | 0 | 0 | 0 |
--------------------------------------------------------------------------------------------------------------------------------------------------------------
现在我显示了 3 个服务,因为它会变成一个巨大的水平滚动条,但每个 user_id 最多可以有 10 个服务,这意味着一些用户可能有 4 个服务。
这是我要查询的。
SELECT user_id, service FROM table
PIVOT (?) FOR order_id IN (0, 1, 2, 3 ,4 ,5 ,6, 7, 8, 9, 10))
我不知道如何继续前进。有什么帮助吗? 在此先感谢:-)
【问题讨论】:
标签: oracle plsql oracle11g plsqldeveloper