我有一种情况,我必须从一年前、上个月和当月获取数据。实现这一目标的最佳方法是什么?
我有一个表,其中包含年、月和数据。在下面的查询中添加了一个过滤器 c.ReportMonth = DATENAME(month, @12MonthsAgo) 和 c.ReportYear = Year(@12MonthsAgo) 这是一年前的。同样,如果我必须获取上个月和当前月份,我可以通过设置过滤器在同一个查询中做到这一点吗?我们该怎么做?
除了我最终编写 3 个选择查询然后将选择放入 tmp 表并稍后合并表之外,还有更好的方法吗?
create table #TPTABLE
(
KPIName varchar(150)
,MetricName Varchar(200)
,MetricId INT
,DataSource varchar(50)
,[AnYearAgo] Float
,[PreviousMonth] float
,[CurrentMonth] float
);
insert into #TPTABLE
(KPIName,MetricName,MetricId,DataSource,[AnYearAgo])
SELECT
p.KPIName
,p.MetricName
,p.MetricId
,p.DataSource
,c.Value as [AnYearAgo]
FROM [IntegratedCare].[report].[KPIMetricDetails] p
LEFT JOIN [IntegratedCare].[report].[KPIMectricValues] c
ON p.[MetricId] = c.MetricId
WHERE c.ReportMonth = DATENAME(month, @12MonthsAgo) and c.ReportYear = Year(@12MonthsAgo)
ORDER BY KPI_Id ASC, [MetricId] ASC