2014-09-22 105 views
0

如何查詢以獲得以下結果...?!!將行轉換爲sql中的列

表1:

MainID col1 col2 

1  qq qq 

2  qq qq 

3  qq qq 

4  qq qq 

5  qq qq 

表2

MainID  lineNo  Text 

1   1   price 

1   2   name 

1   3   date 

2   1   price 

2   2   name 

2   3   date 

我需要一個查詢以導致像

MainId  Col1 col2  price name date 

1   qq  qq  price name date 

2   qq  qq  price name date 

這需要3個不同的列,以進行上3種不同的條件一個MainID的ons;形成一排。

回答

1

您應該能夠通過連接多個嵌入式查詢來執行以下操作:

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 
0

這是一個支點查詢。但是,還有其他解決方法。下面是使用的方法加入:

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關鍵字做到這一點。