首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用字段类型“text”和SUM(amt)选择DISTINCT

用字段类型“text”和SUM(amt)选择DISTINCT
EN

Stack Overflow用户
提问于 2014-09-23 08:21:59
回答 3查看 214关注 0票数 1

我在SQL查询上遇到了问题:

这就是我想做的:

代码语言:javascript
复制
"SELECT DISTINCT *, SUM(amt) AS ttl_amt FROM table WHERE..."

我的两个字段是“text”类型,SQL不允许选择这种类型,因为它们是不可比较的。

我需要对相对项进行分组,并将它们显示为具有组合ttl_amt值的单个行,如上面所示。

我尝试在SELECT DISTINCT语句中选择“非文本”字段(varchar、float、int等),然后使用另一个while()查询在while()循环中提取“text”字段,但这些信息没有显示出来(“text”字段)。

如果你需要更多的信息,请告诉我。

有什么想法吗?在SQL语法方面,我不是专家。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-23 08:29:34

在使用聚合函数(如SUM()COUNT()AVG()等)时,SELECT部分中的所有字段都应该在聚合函数中,或者应该在GROUP BY中提及。实际上,您似乎希望SQL是这样的:

代码语言:javascript
复制
  select Field1, -- you can't use * here!
         Field2,
         ...
         FieldN,
         Sum(amt)
    from Table
group by Field1, -- you can't use * here!
         Field2,
         ...
         FieldN

group by使分组变得不同,所以这里不需要任何额外的DISTINCT

票数 2
EN

Stack Overflow用户

发布于 2014-09-23 08:29:59

您是否尝试使用组一语句,而不是不同的?例如:

从表中选择field1、field2、field3、sum(field4)。field1组、field2组、field3组;

问候

票数 2
EN

Stack Overflow用户

发布于 2014-09-23 08:40:18

您是正确的:文本数据类型在任何分组中都是不允许的.通过转换试试

例如:

代码语言:javascript
复制
SELECT DISTINCT convert(varchar(max),amt) AS ttl_amt FROM table WHERE 1=1

(不应在不同的地方使用*)

编辑:不好意思,在沃查菲尔德上和是个愚蠢的主意。修正后

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25990275

复制
相关文章

相似问题

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