2010-10-22 65 views
1
SELECT YEAR(aum.AUM_Timeperiod) as Year, 
     DATEPART(q, aum.AUM_TimePeriod) AS Quarter, 
     SUM(cast(aum.AUM_AssetValue AS money)) as total_AssetValue 
    FROM AssetUnderManagement as aum, 
     LineOfBusiness 
    where aum.LOB_ID = LineOfBusiness.LOB_ID 
    and LineOfBusiness.LOB_Name = 'Asset Management' 
GROUP BY YEAR(aum.AUM_Timeperiod), DATEPART(q, aum.AUM_TimePeriod); 

以上查詢返回每個季度的值。如何查詢每季度最後一個月的價值?

我的問題是如何改變它,如果我想把該季度上個月的Total_AssetValue分配到該季度。

對於eaxmple Quater 3 total_AssetValue是sum(100 + 200 + 300)。但我想在四3的值是300,其在四

+0

我們需要知道架構。 – 2010-10-22 15:38:23

+0

有兩個表AssetUnder管理和LineOfBusiness和AssetUnderManagement每月都有數據 – Sravs 2010-10-22 15:43:06

+0

對不起,我們的多個編輯將其轉換爲社區wiki :( – 2010-10-22 15:48:57

回答

0

上個月值如何:

SELECT 
    Year, 
    Quarter, 
    (
    SELECT SUM(CAST(AUM_AssetValue AS MONEY)) 
     FROM AssetUnderManagement 
    WHERE YEAR(AUM_Timeperiod) = i.Year 
      AND MONTH(AUM_TimePeriod) = i.LastMonthInQuarter 
) AS total_AssetValue 
FROM 
    (
    SELECT 
    YEAR(aum.AUM_Timeperiod)  AS Year, 
    DATEPART(q, aum.AUM_TimePeriod) AS Quarter, 
    MAX(MONTH(aum.AUM_TimePeriod)) AS LastMonthInQuarter 
    FROM 
    AssetUnderManagement as aum, LineOfBusiness 
    WHERE 
    aum.LOB_ID = LineOfBusiness.LOB_ID 
    AND LineOfBusiness.LOB_Name = 'Asset Management' 
    GROUP BY 
    YEAR(aum.AUM_Timeperiod), 
    DATEPART(q, aum.AUM_TimePeriod) 
) AS i 
+0

上述查詢不適用於我 – Sravs 2010-10-22 16:04:13

+0

@Sravs:您是否收到錯誤消息或者它是什麼?另外,你的問題很模糊,你可能需要澄清一些。 – Tomalak 2010-10-22 16:10:05

+0

我沒有得到任何錯誤,但從上面的查詢中Total_AssetValue的值返回錯誤。 – Sravs 2010-10-22 16:12:15

0

這是一個使用公用表表達式的一個版本:

WITH MyData AS 
    (SELECT YEAR(aum.AUM_Timeperiod) AS [Year], DATEPART(q, aum.AUM_TimePeriod) AS [Quarter], 
     DATEPART(M, aum.AUM_TimePeriod) AS [Month], 
     DATEPART(M, aum.AUM_TimePeriod) - (DATEPART(q, aum.AUM_TimePeriod) - 1) * 3 AS [MonthInQtr], 
     SUM(CAST(aum.AUM_AssetValue AS MONEY)) AS [total_AssetValue] 
    FROM AssetUnderManagement AS aum, LineOfBusiness 
    WHERE aum.LOB_ID = LineOfBusiness.LOB_ID 
     AND LineOfBusiness.LOB_Name = 'Asset Management' 
    GROUP BY YEAR(aum.AUM_Timeperiod), DATEPART(q, aum.AUM_TimePeriod), 
     DATEPART(M, aum.AUM_TimePeriod), DATEPART(M, aum.AUM_TimePeriod) - 
     (DATEPART(q, aum.AUM_TimePeriod) - 1) * 3 
    ) 

SELECT [Year], [Quarter] 
FROM MyData 
WHERE MonthInQtr = 3 
ORDER BY [Year], [Quarter], [total_AssetValue] 
; 

您可以使用上面的CTE並使用以下查詢來獲得原始結果

SELECT [Year], [Quarter], SUM([total_AssetValue]) 
FROM MyData 
GROUP BY [Year], [Quarter] 
ORDER BY [Year], [Quarter] 
; 
相關問題