Sql 旋转日期和值列以获得它们的组合
我有一张这样结构的桌子:Sql 旋转日期和值列以获得它们的组合,sql,oracle,Sql,Oracle,我有一张这样结构的桌子: +--------+-----------+------------+------+ | userid | date | item | rank | +--------+-----------+------------+------+ | 34444 | 01-Jul-15 | pen | 3 | | 34444 | 04-Jul-15 | TV | 2 | | 34444 | 09-Jul-15 |
+--------+-----------+------------+------+
| userid | date | item | rank |
+--------+-----------+------------+------+
| 34444 | 01-Jul-15 | pen | 3 |
| 34444 | 04-Jul-15 | TV | 2 |
| 34444 | 09-Jul-15 | controller | 1 |
| 531 | 03-Jul-15 | keyboard | 3 |
| 531 | 06-Jul-15 | pen | 2 |
| 531 | 10-Jul-15 | bowl | 1 |
+--------+-----------+------------+------+
每个项目已经根据日期进行了排名,每个用户最多只能有3个项目。我有他们的最后3个项目和与之相关的日期。这些项目可以是任何东西
我希望以透视日期和项目组合的方式生成视图。例如,此表所需的视图为:
+--------+------------+-----------+-------+-----------+----------+-----------+
| userid | item1 | date1 | item2 | date2 | item3 | date3 |
+--------+------------+-----------+-------+-----------+----------+-----------+
| 34444 | controller | 09-Jul-15 | TV | 04-Jul-15 | pen | 01-Jul-15 |
| 531 | bowl | 10-Jul-15 | pen | 06-Jul-15 | keyboard | 03-Jul-15 |
+--------+------------+-----------+-------+-----------+----------+-----------+
这可能吗
谢谢你只需要做一个旋转。在较新的版本中,可以使用实际的
pivot
关键字。或者在任何版本中,您都可以这样做
SELECT userid,
max( case when rank = 1 then item else null end) item1,
max( case when rank = 1 then date else null end) date1,
max( case when rank = 2 then item else null end) item2,
max( case when rank = 2 then date else null end) date2,
max( case when rank = 3 then item else null end) item3,
max( case when rank = 3 then date else null end) date3
FROM your_table
GROUP BY userid