2017-05-19 30 views
1

我很新的SQL,我一直在使用SQL對Progress數據庫是,我有以下代碼:SQL(在Progress數據庫) - 如何使用Where子句如下計算領域

Select pub."GL_Table"."AccNum_Col", pub."GL_Table"."AccMnth_Col", Sum(pub."GL_Table"."Amount_Col"), ROUND((pub."GL_Table"."AccMnth_Col")/100,0) AS "Year", MOD(pub."GL_Table"."AccMnth_Col",100) As "Month" 
FROM pub."GL_Table" 
GROUP BY pub."GL_Table"."AccNum_Col", pub."GL_Table"."AccMnth_Col" 
ORDER BY pub."GL_Table"."AccNum_Col", pub."GL_Table"."AccMnth_Col" 

我只想只顯示"Year" 2017年

那些行我曾嘗試下面的(但我收到的錯誤):

Select * FROM (
Select pub."GL_Table"."AccNum_Col", pub."GL_Table"."AccMnth_Col", Sum(pub."GL_Table"."Amount_Col"), ROUND((pub."GL_Table"."AccMnth_Col")/100,0) AS "Year", MOD(pub."GL_Table"."AccMnth_Col",100) As "Month" 
FROM pub."GL_Table" 
GROUP BY pub."GL_Table"."AccNum_Col", pub."GL_Table"."AccMnth_Col" 
ORDER BY pub."GL_Table"."AccNum_Col", pub."GL_Table"."AccMnth_Col" 
) 
WHERE "Year" = 2017 

誰能幫助我?

在此先感謝

+0

mysql或sql server? – GurV

+0

您使用的是MySQL,MS SQL Server或Progress DB嗎? – jarlh

+1

什麼是錯誤? –

回答

0

您缺少子查詢別名。並且order by子句應該應用於子查詢之外。

select * 
from (
    select "gm-accno", 
     "gt-accmth", 
     Sum("gt-amount"), 
     ROUND(("gt-accmth")/100, 0) as "Year", 
     MOD("gt-accmth", 100) as "Month" 
    from pub."glsytr" 
    group by "gm-accno", 
     "gt-accmth" 
    ) t 
where "Year" = 2017 
order by "gm-accno", 
    "gt-accmth" 
1

雖然子查詢是一種方法,但您也可以參考where子句中的計算。

Select pub."GL_Table"."AccNum_Col", pub."GL_Table"."AccMnth_Col", Sum(pub."GL_Table"."Amount_Col"), ROUND((pub."GL_Table"."AccMnth_Col")/100,0) AS "Year", MOD(pub."GL_Table"."AccMnth_Col",100) As "Month" 
FROM pub."GL_Table" 
WHERE ROUND((pub."GL_Table"."AccMnth_Col")/100,0) = 2017 
GROUP BY pub."GL_Table"."AccNum_Col", pub."GL_Table"."AccMnth_Col" 
ORDER BY pub."GL_Table"."AccNum_Col", pub."GL_Table"."AccMnth_Col" 
0

我猜你需要列別名和表別名。我對Progress不是很熟悉,但以下看起來更正確:

SELECT * 
FROM (SELECT pub."GL_Table"."AccNum_Col", pub."GL_Table"."AccMnth_Col", 
      Sum(pub."GL_Table"."Amount_Col") as "Amount", 
      ROUND((pub."GL_Table"."AccMnth_Col")/100, 0) AS "Year", 
      MOD(pub."GL_Table"."AccMnth_Col", 100) As "Month" 
     FROM pub."GL_Table" 
     GROUP BY pub."GL_Table"."AccNum_Col", pub."GL_Table"."AccMnth_Col" 
     ORDER BY pub."GL_Table"."AccNum_Col", pub."GL_Table"."AccMnth_Col" 
    ) ym 
WHERE "Year" = 2017