2012-10-16 46 views
-1

我试图通过一个月来总结我的每日数据(TRUNC(DM_OWNER.LD_LEG_DW.CPLD_DTT),这是在Web智能BI报告创建。总和一个月SQL

SELECT 
    DM_OWNER.LD_LEG_DW.LGST_GRP_CD, 
    DM_OWNER.LGST_GRP_T.LGSTGRP_DESC, 
    DM_OWNER.LD_LEG_DW.CARR_CD, 
    DM_OWNER.LD_LEG_DW.LD_LEG_ID, 
    DM_OWNER.LD_LEG_DW.BILL_TO_CUST_CD, 
    trunc(DM_OWNER.LD_LEG_DW.CPLD_DTT), 
    trunc(DM_OWNER.VCHR_AP_T.CRTD_DTT), 
    AP_Detail.PYMNT_AMT_DLR 
FROM 
    DM_OWNER.LD_LEG_DW, 
    DM_OWNER.LGST_GRP_T, 
    DM_OWNER.VCHR_AP_T, 
    DM_OWNER.CHRG_DETL_T_NOTOTAL_V AP_Detail 
WHERE 
    (DM_OWNER.LD_LEG_DW.LD_LEG_ID=DM_OWNER.VCHR_AP_T.LD_LEG_ID(+) ) 
    AND (DM_OWNER.VCHR_AP_T.VCHR_NUM=AP_Detail.VCHR_NUM_AP ) 
    AND (DM_OWNER.LD_LEG_DW.LGST_GRP_CD=DM_OWNER.LGST_GRP_T.LGST_GRP_CD ) 
    AND 
    (
    DM_OWNER.LD_LEG_DW.LGST_GRP_CD In ('PBRK' ) 
    AND 
    trunc(DM_OWNER.VCHR_AP_T.CRTD_DTT) >= '01-10-2012 00:00:00' 
) 
+1

哪个字段包含您尝试GROUP BY的日期?它是什么数据类型?您想要汇总哪些字段?它们是什么数据类型?你正在使用哪种RDBMS? – MatBailie

+0

你的问题是什么? –

+0

@Dems:可能是Oracle,由WHERE子句中的“(+)”来判断。 –

回答

2

没有明确的字段名称,或数据结构的解释,这太模糊。但原则是

select 
    displayfields, 
    year(datefield), month(datefield), 
    sum(valuefield) 
from yourtable 
group by 
    displayfields, 
    year(datefield), month(datefield), 
+0

如果数据跨越一年以上? – MatBailie

+0

@dems然后我添加年份功能。 – podiluska

0

没有进入您的查询的细节,这里有一个通用的方法。

的CAST是讨厌的,但这b给你一个实际的DATETIME作为石斑鱼的好处。

SELECT 
    SUM(Amount) AS MonthTotal, 
    CAST(CAST(YEAR(DateCollected) AS VARCHAR(4)) 
    + '/' + CAST(MONTH(DateCollected) AS VARCHAR(2)) 
    + '/01' AS DATETIME) AS PaymentMonth 
FROM 
    PaymentsReceived 
GROUP BY 
    CAST(CAST(YEAR(DateCollected) AS VARCHAR(4)) 
    + '/' + CAST(MONTH(DateCollected) AS VARCHAR(2)) + '/01' AS DATETIME)