0

How to query to get following result...?!!

table 1:

MainID col1 col2

1       qq    qq

2       qq    qq

3       qq    qq

4       qq    qq

5       qq    qq

table 2

MainID      lineNo      Text

1           1           price

1           2           name

1           3           date

2           1           price

2           2           name

2           3           date

i need a query to result like

MainId     Col1    col2     price   name    date

1           qq      qq      price   name    date

2           qq      qq      price   name    date

This requires 3 different columns to be made on 3 different conditions for a MainID ; forming a single row.

2 Answers 2

1

You should be able to do the following by joining on multiple embedded queries:

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
Sign up to request clarification or add additional context in comments.

Comments

0

This is a pivot query. However, there are other ways to solve it. Here is a method using joins:

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;

You can also do this with conditional aggregation and using the pivot keyword.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.