2014-01-28 78 views
0

我需要使用SUM来合计我的数据库中的所有工资。我无法正常工作。这是给我四行的声明。除“直接薪酬成本”外,其他所有栏目均相同。我如何合计四项直接薪酬成本,以便我可以拥有一条独特的产品线?需要SUM SQL语句

这里是我的代码..

SELECT C.FOS_PROJ_ID_UNQU||'-'||C.FOS_PROJ_ID_STG||'-'||C.FOS_PROJ_ID_ELMT AS "STATE PROJECT ID", 
    V.VEND_NM AS "VENDOR NAME", 
    CC.WRKO_NB AS "WORK ORDER NUMBER", 
    TO_CHAR(CCD.ATHZ_DT, 'MON-DD-YYYY') AS "AUTHORIZATION DATE", 
    ----I need to SUM the following line ---- 
    TO_CHAR((CTD.DCT_SAL_COST_AMT),'$999,999,999.99') AS "DIRECT SALARY COST", 
    TO_CHAR(CCC.OVHD_COST_AMT,'$999,999,999.99') AS "OVERHEAD COSTS", 
    TO_CHAR(CTD.DCT_SAL_COST_AMT + CCC.OVHD_COST_AMT,'$999,999,999.99') AS "TOTAL" 
FROM DOT1CARO.DT_VEND V, DOT1CARO.DT_CSPJ_CTRC CC, DOT1CARO.DT_CSPJ C, DOT1CARO.DT_CSPJ_CTRC_DTL CCD, DOT1CARO.DT_CSPJ_CTRC_COST CCC, DOT1CARO.DT_CTCST_TASK_DTL CTD 
WHERE V.VEND_ID=CC.VEND_ID 
AND CC.CSPJ_ID=C.CSPJ_ID 
AND CC.CSPJ_CTRC_ID=CCD.CSPJ_CTRC_ID 
AND CCD.CSPJ_CTRC_DTL_ID=CCC.CSPJ_CTRC_DTL_ID 
AND CCC.CSPJ_CTCST_ID = CTD.CSPJ_CTCST_ID 
AND CCD.ATHZ_DT = '14-NOV-2013' 
AND V.VEND_NM LIKE 'Ka% 
ORDER BY 2; 
+1

请提供数据和期望结果的样本。 –

+5

[坏习惯踢:使用旧式联接](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins。 aspx) - 旧式*逗号分隔的表*样式列表已停止使用ANSI - ** 92 ** SQL标准(超过** 20年前**) –

回答

0

如果你想多个字段在同一行加在一起:

CTD.DCT_SAL_COST_AMT + CCC.OVHD_COST_AMT + .... AS Combined_Amounts 

如果要跨行单独合计起来:

SELECT NonAggCol1, NonAggCol2, TO_CHAR((SUM(CTD.DCT_SAL_COST_AMT)),'$999,999,999.99') AS "DIRECT SALARY COST" 
FROM Table1 a 
JOIN Table2 b 
    ON a.col1 = b.col1 
JOIN Table3 c 
    ON a.col1 = c.col1 
GROUP BY NonAggCol1, NonAggCol2 

如果您想在行和行之间添加它们,您可以将上述两者结合使用。请确保在您的GROUP BY列表中包含每个非聚合字段。消除已弃用的连接语法是一个好主意。

+0

谢谢,这有所帮助。我没有意识到我需要GROUP BY的所有列。 – Dan