我在SQL查询上遇到了问题:
这就是我想做的:
"SELECT DISTINCT *, SUM(amt) AS ttl_amt FROM table WHERE..."我的两个字段是“text”类型,SQL不允许选择这种类型,因为它们是不可比较的。
我需要对相对项进行分组,并将它们显示为具有组合ttl_amt值的单个行,如上面所示。
我尝试在SELECT DISTINCT语句中选择“非文本”字段(varchar、float、int等),然后使用另一个while()查询在while()循环中提取“text”字段,但这些信息没有显示出来(“text”字段)。
如果你需要更多的信息,请告诉我。
有什么想法吗?在SQL语法方面,我不是专家。
发布于 2014-09-23 08:29:34
在使用聚合函数(如SUM()、COUNT()、AVG()等)时,SELECT部分中的所有字段都应该在聚合函数中,或者应该在GROUP BY中提及。实际上,您似乎希望SQL是这样的:
select Field1, -- you can't use * here!
Field2,
...
FieldN,
Sum(amt)
from Table
group by Field1, -- you can't use * here!
Field2,
...
FieldNgroup by使分组变得不同,所以这里不需要任何额外的DISTINCT
发布于 2014-09-23 08:29:59
您是否尝试使用组一语句,而不是不同的?例如:
从表中选择field1、field2、field3、sum(field4)。field1组、field2组、field3组;
问候
发布于 2014-09-23 08:40:18
您是正确的:文本数据类型在任何分组中都是不允许的.通过转换试试
例如:
SELECT DISTINCT convert(varchar(max),amt) AS ttl_amt FROM table WHERE 1=1(不应在不同的地方使用*)
编辑:不好意思,在沃查菲尔德上和是个愚蠢的主意。修正后
https://stackoverflow.com/questions/25990275
复制相似问题