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
Post a Comment