mysql - How to rotate multiple sums in a single query from columns into rows -


i have searched answers database , haven't found need. have table contract values , date related each of values. query supposed sum contract values acumulated last 6 months, beginning current date , looking 3 months, considering 6 month acumulation period:

select sum((contractdate > date_sub(date_sub(curdate(), interval 0 month), interval 6 month) , (contractcancelled <>1)) * contractvalue) today,  sum((contractdate > date_sub(date_sub(curdate(), interval 1 month), interval 6 month) , (contractdate <= date_sub(curdate(), interval 1 month)) , (contractcancelled <>1)) * contractvalue) onemonthago, sum((contractdate > date_sub(date_sub(curdate(), interval 2 month), interval 6 month) , (contractdate <= date_sub(curdate(), interval 2 month)) , (contractcancelled <>1)) * contractvalue) twomonthsago,  sum((contractdate > date_sub(date_sub(curdate(), interval 3 month), interval 6 month) , (contractdate <= date_sub(curdate(), interval 3 month)) , (contractcancelled <>1)) * contractvalue) threemonthsago  contracts 

the query works fine results in single row, acumulated values each 1 in different column:

+----+---------+-------------+--------------+----------------+ |    | today   | onemonthago | twomonthsago | threemonthsago |  +--------------+-------------+--------------+----------------+ |  1 | 3434005 |   3992877   |    4104565   |     3688412    | +--------------+-------------+--------------+----------------+ 

what need make query graph, , that, instead of columns, acumulated results should appear rows, or this:

+---------------+--------------------------------------+ |  lookingto    |  acumulatedcontractvalue (6 months)  |  +---------------+--------------------------------------+ |    today      |              3434005                 | +---------------+--------------------------------------+ | onemonthago   |              3992877                 | +---------------+--------------------------------------+ | twomonthsago  |              4104565                 | +---------------+--------------------------------------+ |threemonthsago |              3688412                 | +---------------+--------------------------------------+ 

if in ms sql, believe pivot should work don't know how in mysql. please me on this?

i don't understand why need can union:

select 'today' `lookingto`, sum((contractdate > date_sub(date_sub(curdate(), interval 0 month), interval 6 month) , (contractcancelled <>1)) * contractvalue)  acumulated contracts union select 'onemonthago', sum((contractdate > date_sub(date_sub(curdate(), interval 1 month), interval 6 month) , (contractdate <= date_sub(curdate(), interval 1 month)) , (contractcancelled <>1)) * contractvalue) contracts union select 'twomonthsago', sum((contractdate > date_sub(date_sub(curdate(), interval 2 month), interval 6 month) , (contractdate <= date_sub(curdate(), interval 2 month)) , (contractcancelled <>1)) * contractvalue)   contracts union select 'threemonthsago', sum((contractdate > date_sub(date_sub(curdate(), interval 3 month), interval 6 month) , (contractdate <= date_sub(curdate(), interval 3 month)) , (contractcancelled <>1)) * contractvalue)  contracts 

Comments