【问题标题】:Pivoting with multiple column使用多列旋转
【发布时间】: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


【解决方案1】:

试试这个代码:

select user_id ,max(case when order_id=1 then service end) as service_1 ,max(case when order_id=2 then service end) as service_2 from table
group by user_id

service_1,2..10 相同。

【讨论】:

  • 谢谢...在稍微调整了您的查询以供我使用之后,它起作用了:-)
猜你喜欢
  • 2013-03-03
  • 2022-01-23
  • 2019-01-02
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多