使用。如果你不喜欢重复复杂的表达式,你可以使用子查询代替:
select Table_A.Po_no, Table_A.rmcode, SUM(Table_A.weight) as recvqty,
po_noRM
from (SELECT Table_A.Po_no, Table_A.rmcode,
LTRIM(RTRIM(Table_A.po_no)) + LTRIM(RTRIM(Table_A.rmcode)) as po_noRM
FROM Table_A
) T
group by po_noRM, Po_no, rmcode
ORDER BY 1 desc
这对性能没有影响。
我修复了查询以包含组b语句中除了总和以外的所有列。另外,在rtrim(ltrim())声明中提到了另一个表。我将它改为Table_A。
但是,我怀疑这个查询不会做你真正想要的(这是为了减少返回的行数,因为你仍然按照po_noRM的组件进行分组)。这可能更接近你想要的:
select Po_no_trim, rmcode_trim, SUM(Table_A.weight) as recvqty,
(po_no_trim+rmcode_trim) as po_noRM
from (SELECT LTRIM(RTRIM(Table_A.po_no)) as po_no_trim,
LTRIM(RTRIM(Table_A.rmcode)) as rmcode_trim, Table_A.weight
FROM Table_A
) T
group by po_noRM_trim, Po_no_trim
ORDER BY 1 desc
请提供样本数据和所需的输出。 – RedFilter 2012-07-24 15:48:11
你问这是因为你不想用LTRIM(...)+ LTRIM()重复表达式吗?有几种方法可以避免这种情况,但与排序不同,不要认为group by允许位置编号。 – joshp 2012-07-24 15:51:51
没有joshp我无法通过po_noRM分组。所以我正在考虑按列位置分组的方式。 – rock 2012-07-24 15:55:11