我有一个查询,它使用SUM IF()来执行跨选项卡结果集。在这个查询中,我的值In和IF()硬编码。问题是将新值添加到数据库中。是否有一种方法可以在不硬编码和IF()值的情况下编写查询?以下是查询:
选择storeid,sum(marketsegmentid= 6,1,0)作为
6,sum(如果(marketsegmentid= 7,1,0))选择7,sum(如果(marketsegmentid= 12,1,0))作为12,sum(如果(市场段d= 17,1,0))作为17,sum(如果(市场段d= 22,1,0))作为22,和(如果(市场链段d= 27,1,0))作为27,sum(marketsegmentid= 32,1,0)为32,sum(若(marketsegmentid= 37,1,0))为37,sum(marketsegmentid= 42,1,0)为42,sum(若(marketsegmentid= 47,1,0)为47,sum(若(marketsegmentid= 52,1,0))为52,sum(若(marketsegmentid= 97,1,0))为97,sum(42= 102,1,0)为102,求和(107= 107,1,0),和(市场链= 112,1,0)为112,和(若(市场)= 117,1,0)为117,和(若(市场段)= 122,1,0)为122,和(若(市场链段d= 127,1,0)为127,sum(若(市场段d= 132,1,0))为132,sum(市场段d= 137,1,0)为132,sum(市场段d=137,1,0)为132。(0)以137为142,以142为142(按商店)分组;
查询在报表中使用,并将结果导出到CSV。1在结果集中用作标志。
我正在查询的表设置如下:
CREATE TABLE storemarketsegments(id INT NOT NULL, marketsegmentid INT NOT NULL);市场部分放在一个单独的表格中:
创建表市场段(id AUTO_INCREMENT,主键(Id),名称VARCHAR(45),描述VARCHAR(45));
任何帮助都将不胜感激。我不确定是否有一种无需硬编码值就可以编写查询的方法,而且每当添加新的市场段时,我也不介意更新报表中的查询,但我想我会检查一下。预先感谢您的协助。
发布于 2012-06-04 16:35:24
您可以将每个计数作为单独的行返回,然后根据应用程序层的需要进行筛选:
select storeid, marketsegmentid, count(*) as Count
from storemarketsegments
group by storeid, marketsegmentid;https://stackoverflow.com/questions/10884727
复制相似问题