Sql server 从SQL Server中的视图获取当前年份的记录

Sql server 从SQL Server中的视图获取当前年份的记录,sql-server,Sql Server,我有一个名为vwMemberPolicyInfo的视图,我需要显示当年输入的所有记录 我的问题是: select EffectiveDate AS [Month], count(MemberID) AS Agents, sum(ActualPremium) AS Premium from vwMemberPolicyInfo Where EffectiveDate > DATEADD(year, -1, GETDATE()) GROUP

我有一个名为vwMemberPolicyInfo的视图,我需要显示当年输入的所有记录

我的问题是:

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
我只需要显示当前年份的条目..提前感谢

试试YEAREffectiveDate=YEARGETDATE


希望它能有所帮助。

它工作得很好-它完全按照你告诉它的做-它会返回今天到一年前的所有行,例如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年的行。

选择
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)
生效日期为[月份], countMemberID作为代理, 作为保险费的实际费用 从…起 vwMemberPolicyInfo 哪里 dateaddyear,0,EffectiveDate=dateaddyear,0,GETDATE 分组 生效日期

dateadd(year,0,EffectiveDate) = DATEADD(year, -1, GETDATE())
dateadd(year,-1,EffectiveDate) = DATEADD(year, -1, GETDATE())

+1对于可以在effectiveDate上使用索引和列统计信息的答案是,这很好,即yeareffectivedate=yeargetdate