首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将行转换为sql中的列

将行转换为sql中的列
EN

Stack Overflow用户
提问于 2014-09-22 10:18:22
回答 2查看 41关注 0票数 0

如何查询才能得到以下结果.!!

表1:

代码语言:javascript
复制
MainID col1 col2

1       qq    qq

2       qq    qq

3       qq    qq

4       qq    qq

5       qq    qq

表2

代码语言:javascript
复制
MainID      lineNo      Text

1           1           price

1           2           name

1           3           date

2           1           price

2           2           name

2           3           date

我需要查询才能得到类似的结果

代码语言:javascript
复制
MainId     Col1    col2     price   name    date

1           qq      qq      price   name    date

2           qq      qq      price   name    date

这需要在3种不同的条件下为MainID创建3种不同的列;形成一行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-22 11:07:28

您应该能够通过连接多个嵌入式查询来完成以下操作:

代码语言:javascript
复制
Select 
      table1.MainID, table1.col1, table1.col2, q1.price, q2.name, q3.date
from 
table1 
left outer join (select 
                 MainID, lineNo, Text as price 
                 from 
                 table2) q1 on table1.MainID = q1.MainID
left outer join (select 
                 MainID, lineNo, Text as name 
                 from table2) q2 on table1.MainID = q2.MainID
left outer join (select 
                 MainID, lineNo, Text as date 
                 from table2) q3 on table1.MainID = q3.MainID
票数 1
EN

Stack Overflow用户

发布于 2014-09-22 11:16:23

这是一个枢轴查询。然而,解决这一问题还有其他方法。下面是一个使用联接的方法:

代码语言:javascript
复制
select t1.mainid, t1.col1, t1.col2, tprice.text as price, 
       tname.text as name, tdate.text as date
from table1 t1 left join
     table2 tprice
     on t1.mainid = tprice.mainid and t2.lineno = 1 left join
     table2 tname
     on t1.mainid = tname.mainid and t2.lineno = 2 left join
     table2 tdate
     on t1.mainid = tdate.mainid and t2.lineno = 3;

您还可以使用条件聚合并使用pivot关键字来完成此操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25971700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档