2016-04-27 48 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

相关问题