使用。如果你不喜歡重複複雜的表達式,你可以使用子查詢代替:
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