2016-04-27 73 views
1

首先我表SUM_REPANDMAINT, Table`s色譜柱名稱:如何在沒有重複條目的情況下在SQL中創建視圖?

ACTUAL_COST, PROJECTED_COST, TOTAL_PREV, TOTAL_PRESENT, 方差, VARIANCE_PER, LIMIT, COST_CENTER, ID, PLANT, BUDGET_YEAR, VERSION,

秒我已查看V_SUM_REPANDMAIN T, View`s列名:

USERNAME, CHARGE_CC, BUDGET_YEAR, 版, 植物, CHARGE_CC, PART_DESC, YEAR_DATE_USD,

這種圖像可以幫助理解這個問題:

enter image description here

enter image description here

我需要得到不重複的值。

注:YEAR_DATE_USD的總和是基於工廠和CHARGE_CC

我的查詢:

SELECT 
    A.ACTUAL_COST, 
    A.PROJECTED_COST, 
    A.TOTAL_PREV, 
    A.TOTAL_PRESENT, 
    A.VARIANCE, 
    A.VARIANCE_PER, 
    A."LIMIT", 
    A.COST_CENTER, 
    A.PLANT, 
    A.BUDGET_YEAR, 
    A."VERSION", 
    B.BUDGET_YEAR, 
    B."VERSION", 
    B.PLANT, 
    B.CHARGE_CC, 
    B.PART_DESC, 
    B.YEAR_DATE_USD 
FROM 
    CMS.SUM_REPANDMAINT A, 
    CMS.V_SUM_REPANDMAINT B 

WHERE 
    (A.BUDGET_YEAR = B.BUDGET_YEAR(+)) AND 
    (A."VERSION" = B."VERSION"(+)) AND 
    (A.PLANT = B.PLANT(+)) AND 
    (A.COST_CENTER = B.CHARGE_CC(+)) AND 
    (B.USERNAME = '[usr_name]') 
+0

us e group by爲您的唯一列 – JYoThI

回答

3

嘗試在你的唯一列使用GROUP BYDISTINCT。這將分組一些結果。

文檔here

+0

感謝您的評論,我已將DISTINCT添加到列名稱A.TOTAL_PRESENT,它給了我錯誤。 – MANGAHAS

1

如果您有重複這意味着:

  • 要麼你是不是加入所有需要的列(需要一個語句添加到WHERE子句這些列)
  • 或者您有多行是正常的,在這種情況下您需要使用GROUP BY子句將它們聚合在一起
+0

感謝您的評論。是的,我有多行是正常的。如何根據字段A.TOTAL_PRESENT進行分組? – MANGAHAS

+0

這取決於你想如何分組他們。你需要明確你想要合併重複值的方式(你保留第一個,你總結它們,你是否取平均數等)。我建議你花一點時間來查看GROUP BY的作品。基本上,您可以在GROUP BY子句中列出要組合的列(當值相等時),並在SELECT子句中使用聚合函數(SUM,FIRST等)。這裏有一個鏈接可以幫助你:http://www.w3schools.com/sql/sql_groupby.asp – kgautron

相關問題