1

i have here a table name table1

debit  credit    groups

100               group1
500     -100      group3
        -100      group3
200     -50       group2

I need an output like this

group1     group2       group3
100         200           500
            -50          -100
                         -100

Here's my query

SELECT
IF((SELECT CASE WHEN groups = "group1"
THEN Debit ELSE Credit END),Debit,Credit) as group1,
IF((SELECT CASE WHEN groups = "group2"
THEN Debit ELSE Credit END),Debit,Credit) as group2,
IF((SELECT CASE WHEN groups = "group3"
THEN Debit ELSE Credit END),Debit,Credit) as group3
FROM table1

the output i get is

group1     group2       group3
    100         200           500
seven
  • 115
  • 1
  • 1
  • 9

1 Answers1

1

Try separating queries for credit and debit info and using union all to merge these columns into one grouped by 'group' value.

select
    case when groups = "group1" then credit end as group1,  
    case when groups = "group2" then credit end as group2,
    case when groups = "group3" then credit end as group3
from table1

union all

select
    case when groups = "group1" then debit end as group1,  
    case when groups = "group2" then debit end as group2,
    case when groups = "group3" then debit end as group3
from table1
openwonk
  • 14,023
  • 7
  • 43
  • 39