Home > Mobile >  How to combine two columns from rows?
How to combine two columns from rows?

Time:10-29

How to combine two columns from one row of a table?

Talbe

ID RulesID ObjectID TypeID
1 9 56 1
7 9 43 3
24 9 73 2
31 9 94 3
33 9 20 4
45 9 1008 8
46 9 1009 7

Result

RulesID ObjectID TypeID ObjectID2 TypeID2
9 56 1 43 3
9 73 2 94 3
9 20 4 1008 8
9 1009 7 null null

CodePudding user response:

Using row_number() and the modulus to determine column. Then it becomes a small matter for a conditional aggregegation.

Example

Select RulesID
      ,ObjectID  = max( case when Col=1 then ObjectID end)
      ,TypeID    = max( case when Col=1 then TypeID end)
      ,ObjectID2 = max( case when Col=0 then ObjectID end)
      ,TypeID2   = max( case when Col=0 then TypeID end)
 From (
        Select * 
              ,Grp = (1 row_number() over (partition by RulesID order by ID)) / 2
              ,Col = row_number() over (partition by RulesID order by ID) % 2
         From YourTable
      ) A
 Group By RulesID,Grp

Results

enter image description here

CodePudding user response:

foreign key should do the job, you can learn more about it here

https://www.w3schools.com/sql/sql_foreignkey.asp

and then you can use inner join: https://www.w3schools.com/sql/sql_join_inner.asp

  • Related