2011-04-15 43 views
2

我有一個視圖叫vwMemberPolicyInfo,我需要顯示當前輸入的所有記錄。從SQL Server的視圖中獲取當年的記錄

我的查詢是:

select 
    EffectiveDate AS [Month], 
    count(MemberID) AS Agents, 
    sum(ActualPremium) AS Premium 
from 
    vwMemberPolicyInfo 
Where 
    EffectiveDate > DATEADD(year, -1, GETDATE()) 
GROUP BY 
    EffectiveDate 

但它不工作正常顯示它的結果:

2010-11-01 00:00:00.000 74 40644.00 
2010-07-01 00:00:00.000 86 50418.00 

2011-03-08 00:00:00.000 1 744.00 
2011-04-08 00:00:00.000 1 0.00 
2010-11-02 00:00:00.000 5 2676.00 

2011-04-14 00:00:00.000 1 1185.00 
2011-02-28 00:00:00.000 7 2988.00 

2011-02-23 00:00:00.000 8 8518.00 
2011-04-10 00:00:00.000 1 1332.00 
2011-04-07 00:00:00.000 3 2544.00 

我只需要本年度項提前顯示..thanks

回答

7

嘗試where YEAR(EffectiveDate) = YEAR(GETDATE())

希望它有幫助。

+1

是的,這是工作的罰款,即一年(EFFECTIVEDATE)=年(GETDATE()) – 2011-04-25 12:19:03

1

它的工作就好了 - 它做正是你告訴它 - 它可以讓你回到那個今天,一年回(如2011年4月15日和2010年4月15日之間)

之間的所有行

你可能想達到什麼是這樣的:

SELECT 
    EffectiveDate AS [Month], 
    COUNT(MemberID) AS Agents, 
    SUM(ActualPremium) AS Premium 
FROM 
    dbo.vwMemberPolicyInfo 
WHERE 
    YEAR(EffectiveDate) = 2011 
GROUP BY 
    EffectiveDate 

這將從今年返回只有行2011年

4
SELECT MONTH(EffectiveDate) AS [Month], 
     count(MemberID) AS Agents, 
     sum(ActualPremium) AS Premium 
FROM vwMemberPolicyInfo 
WHERE EffectiveDate >= DATEADD(year, YEAR(GETDATE()) - 1, CAST('0001-01-01' AS DATE)) 
     AND EffectiveDate < DATEADD(year, YEAR(GETDATE()), CAST('0001-01-01' AS DATE)) 
GROUP BY 
     MONTH(EffectiveDate) 
+1

+1一個答案可以在'EFFECTIVEDATE使用索引(和列統計) ' – 2011-04-15 11:58:06

+0

其不工作.. – 2011-04-25 12:18:09

+0

@user:請詳細說明。 – Quassnoi 2011-04-25 12:49:58

0

選擇
EFFECTIVEDATE AS [月], 計數(MEMBERID)作爲代理人, 總和(ActualPremium)與Premium 從 vwMemberPolicyInfo 凡 DATEADD(年,0,EFFECTIVEDATE)= DATEADD(年,0,GETDATE ()) GROUP BY EFFECTIVEDATE

dateadd(year,0,EffectiveDate) = DATEADD(year, -1, GETDATE()) 
dateadd(year,-1,EffectiveDate) = DATEADD(year, -1, GETDATE()) 
相關問題