首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL中使用SUM IF()而查询中没有硬编码值

如何在MySQL中使用SUM IF()而查询中没有硬编码值
EN

Stack Overflow用户
提问于 2012-06-04 16:30:14
回答 1查看 2.3K关注 0票数 0

我有一个查询,它使用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)以137142,以142142(按商店)分组;

查询在报表中使用,并将结果导出到CSV。1在结果集中用作标志。

我正在查询的表设置如下:

代码语言:javascript
复制
CREATE TABLE storemarketsegments(id INT NOT NULL, marketsegmentid INT NOT NULL);

市场部分放在一个单独的表格中:

创建表市场段(id AUTO_INCREMENT,主键(Id),名称VARCHAR(45),描述VARCHAR(45));

任何帮助都将不胜感激。我不确定是否有一种无需硬编码值就可以编写查询的方法,而且每当添加新的市场段时,我也不介意更新报表中的查询,但我想我会检查一下。预先感谢您的协助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-04 16:35:24

您可以将每个计数作为单独的行返回,然后根据应用程序层的需要进行筛选:

代码语言:javascript
复制
select storeid, marketsegmentid, count(*) as Count
from storemarketsegments 
group by storeid, marketsegmentid;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10884727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档