How to use SUM IF() in MySQL without hard coding values in the query -
i have query uses sum if() cross-tab result set. in query have value sin sum if() hard coded. problem new values added database. there way write query without hard coding values in sum if()? here query:
select storeid, sum(if(marketsegmentid = 6, 1, 0))
6, sum(if(marketsegmentid = 7, 1, 0))7, sum(if(marketsegmentid = 12, 1, 0))12, sum(if(marketsegmentid = 17, 1, 0))17, sum(if(marketsegmentid = 22, 1, 0))22, sum(if(marketsegmentid = 27, 1, 0))27, sum(if(marketsegmentid = 32, 1, 0))32, sum(if(marketsegmentid = 37, 1, 0))37, sum(if(marketsegmentid = 42, 1, 0))42, sum(if(marketsegmentid = 47, 1, 0))47, sum(if(marketsegmentid = 52, 1, 0))52, sum(if(marketsegmentid = 97, 1, 0))97, sum(if(marketsegmentid = 102, 1, 0))102, sum(if(marketsegmentid = 107, 1, 0))107, sum(if(marketsegmentid = 112, 1, 0))112, sum(if(marketsegmentid = 117, 1, 0))117, sum(if(marketsegmentid = 122, 1, 0))122, sum(if(marketsegmentid = 127, 1, 0))127, sum(if(marketsegmentid = 132, 1, 0))132, sum(if(marketsegmentid = 137, 1, 0))137, sum(if(marketsegmentid = 142, 1, 0))142storemarketsegments group storeid;
the query used in report , results exported csv. 1's used flags in result set.
the table querying set this:
create table storemarketsegments(id int not null, marketsegmentid int not null); the marketsegments kept in separate table:
create table marketsegment(id int not null auto_increment, primary key(id), name varchar(45), description varchar(45));
any appreciated. not sure if there way write query without hard coding values , don't mind updating query in report whenever new marketsegments added thought check. thank in advance assistance.
you can return each count separate row, , filter needed in application layer:
select storeid, marketsegmentid, count(*) count storemarketsegments group storeid, marketsegmentid;
Comments
Post a Comment