将行转置为单列
Posted
技术标签:
【中文标题】将行转置为单列【英文标题】:Transposing rows to a single column 【发布时间】:2013-12-05 03:07:40 【问题描述】:我有一个需要在单列中输入值的网格元素
Key_id event1 name1 date1 price1 event2 name2 date2 price2
234 Marriage Sasha 09-DEC 4300 Birthday Kate 10-DEC 3000
我的 SQL 查询输出将返回行中列出的数据
Key_id event Name date price
234 Marriage Sasha 09-DEC 4300
234 Birthday Kate 10-DEC 3000
所以我需要根据 key_id 将行列表转置或转换为列。值不是固定的,将根据用户选择的时间段动态变化。
我在这个论坛上也遇到过类似的问题,但我想知道是否可以使用任何 Java API 或 SQL 查询来实现同样的事情。
请告诉我如何实现这一目标..
谢谢
【问题讨论】:
您的实际 RDBMS mysql 或 Oracle 是什么? 根据 id 将行列表转置为单个列 是什么意思。您在所需的输出中显示了 9 列... @peterm 感谢您的回复..我正在使用 Oracle ..问题是我的查询输出数据将被列为具有重复 key_id 的行。我需要一种解决方案,以使所需的输出应根据 key_id 将其分组为单个列.. ...您还没有弄清楚“转换为单列”的含义-您的意思是将各个列(事件、名称等)连接到一个列(注意,我不推荐这个,因为你松散了简单的方法来分离信息)。 @ Clockwork-Muse 对不起,如果我的问题不清楚。我需要将我的行转换为以 id 为键的列,以便数据按列增长..希望这可以解决您的问题..谢谢 嗨@jegadees 这个答案对解决您的问题有帮助吗?如果不是,请在您的问题中添加不成功的内容。当答案对您有帮助时,您是否可以通过单击旁边的空心绿色复选标记来接受它? 【参考方案1】:根据您的问题,我猜您想将水平轴(列)转换为垂直轴。
使用类似的东西:
select t.key_id
, t.event1 event
, t.name1 name
, t.date1 date_event
, t.price1 price
from table t
union all
select t.key_id
, t.event2 event
, t.name2
, t.date2
, t.price2
from table t
这对您有帮助吗?如果有,请确认。如果没有,请留言。
【讨论】:
以上是关于将行转置为单列的主要内容,如果未能解决你的问题,请参考以下文章