SQL 列到行的转换
我有一个具有以下结构的表:
Col1 Col2
---------------
1 2
3 4
我需要以输出应如下所示的方式进行查询:
ColumnName | ColumnValue
----------------------------
Col1 1
Col2 2
Col1 3
Col2 4
对此的任何帮助将不胜感激。 提前致谢。
I have a table with the following structure:
Col1 Col2
---------------
1 2
3 4
I need to Query in the such a way that the output should be like:
ColumnName | ColumnValue
----------------------------
Col1 1
Col2 2
Col1 3
Col2 4
Any help in this will be greatly appreciated.
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
已经澄清的是,必须对输出进行排序,以便它在 col1 和 col2 之间交替。即使 col2 的值较低,Col1 也将始终首先显示。这:
..应该返回:
实际上,基于排名的交替列表。
目前尚不清楚 OP 使用哪个数据库。假设 MySQL 没有排名/分析功能,您可以使用:
SQL Server 2005+ 和 Oracle 9i+ 支持分析功能,因此您可以使用 ROW_NUMBER 或 RANK:
以前,根据提供的示例数据:
UNION ALL
返回所有行,而UNION
将删除重复项。It's been clarified that the output must be ordered so that it alternates between col1 and col2. Col1 will always be displayed first, even if col2's value is lower. This:
..should return:
Effectively, an alternating list based on rank.
It's not clear what database the OP is using. Assuming MySQL, which has no ranking/analytical functionality you can use:
SQL Server 2005+ and Oracle 9i+ support analytic functions, so you can use ROW_NUMBER or RANK:
Previously, based on the provided example data:
UNION ALL
returns all rows, whileUNION
would remove duplicates.您还可以尝试 UNPIVOT
You can also try UNPIVOT
修复了 OMG 解决方案中的排序问题:
Fixed the ordering issue from OMG's solution: