我遇到SQL查询问题:
这就是我想要做的事情:
"SELECT DISTINCT *, SUM(amt) AS ttl_amt FROM table WHERE..."
我的两个字段属于' text',SQL不允许将此类型选为DISTINCT,因为它们无法比较。
我需要对相关项目进行分组,并将它们显示为一行,其值为ttl_amt
,如上所示。
我已经尝试过选择非文字' SELECT DISTINCT
语句中的字段(varchar,float,int等)然后拉出'文本' while()
循环中的字段使用另一个SQL查询,但该信息未显示(' text'字段)。
如果您需要更多信息,请与我们联系。
有什么想法吗?在SQL语法方面,我不是专家。
答案 0 :(得分:2)
使用聚合函数时,如SUM()
,COUNT()
,AVG()
等。SELECT
部分中的所有其他字段都应位于<{1}}内em>聚合函数或应在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,
...
FieldN
group by
使分组不同,因此您不需要任何其他DISTINCT
答案 1 :(得分:2)
您是否尝试使用group by语句而不是使用distinct?例如:
从表中选择field1,field2,field3,sum(field4),其中... group by field1,field2,field3;
问候
答案 2 :(得分:2)
你是对的:任何分组都不允许使用Text-Datatype。通过转换尝试
e.g。
SELECT DISTINCT convert(varchar(max),amt) AS ttl_amt FROM table WHERE 1=1
(*不应该以不同的方式使用)
编辑:varcharfield上的SUM是一个愚蠢的想法,抱歉。校正