如何使用SQL将垂直数据转换为水平数据?
我有一个表“项目”与一些相关的项目,像这样:
ID Rel_ID Name RelRank --- ------ ---- ------- 1 1 foo 1 2 1 bar 2 3 1 zam 3 4 2 foo2 1 我正在尝试获取查询,因此具有相同Rel_ID的项目将显示在同一行中,如下所示: Rel_ID Name1 Name2 Name3 ------ ----- ----- ----- 1 foo bar zam 2 foo2 我已经尝试多次选择表: SELECT k.Rel_ID,k.name 'Name1',k2.name 'Name2' FROM item k,item k2 WHERE k.Rel_ID = k2.Rel_ID 但是这样做失败了.当然有一个转换或查询,可以大大简化流程,我只是错过了,因为我以前没有以这种方式使用SQL.我失踪了什么 [编辑:添加的RelRank列,它出现在我的数据中] 解决方法无论您正在使用的数据库,您尝试实现的概念称为“数据透视表”.以下是mysql的一个例子: 有些数据库具有内置功能,请参阅下面的链接. SQLServer的: 甲骨文: 您可以随时用手创建枢轴.只需选择结果集中的所有聚合,然后从该结果集中选择.请注意,在您的情况下,您可以使用concat将所有名称放入一列(我认为mysql中是group_concat),因为您不知道有多少个名称与一个rel_id相关. 伪选你的case(我不知道mysql): select rel_id,group_concat(name) from item group by rel_id (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |