2016-08-22 53 views
-2

我有一个TSQL查询,它给出了给定结果集的趋势数据的最大值。我想根据每个月的结果得到这些数据。 (我在结果集中有一个日期时间列)。如果我选择三个月的数据,它必须每个月都给这个数字。现在它会查找所有月份的最大值并给出相同的结果。获取每个月的组的最大值TSQL

下面是我用来获得趋势结果的表达式。它是包含其他列数的select语句的一部分。

select col1, col2, sampledatecollected, (Select MAX(AvailMemSlope) FROM SlopeCTE) * MetricID + (Select MAX (AvailMemIntercept) FROM InterceptCTE) AS AvailMemTrend 

我想我可能需要做这样的事情,但考虑到表达我像如何得到想要的结果

select name, max(value) 
from tbl1 
group by name 

CPUTrend ID的数据我从表达得有点困惑我在第一个查询中指定。

样本数据:

Date  AVGCPU MAXCPU CPUTrend 
8/22/2016 20  40  44 
8/23/2016 20  40  44 
8/24/2016 20  40  44 
8/25/2016 20  40  44 
9/22/2016 20  50  44 
9/23/2016 20  50  44 
9/24/2016 20  50  44 

预期结果:

Date  AVGCPU MAXCPU CPUTrend 
8/22/2016 20  40  32 
8/23/2016 20  40  32 
8/24/2016 20  40  32 
8/25/2016 20  40  32 
9/22/2016 20  50  44 
9/23/2016 20  50  44 
9/24/2016 20  50  44 

现在我得到的是44,因为它的最大值。

+0

请告诉我在问题中新增了一些更为详细的一些示例数据和预期的结果 – TheGameiswar

+0

@TheGameiswar。请验证 – Ramya

+0

请发布当前样本数据 – TheGameiswar

回答

0

我觉得你只是想要一个子查询:

with t as (
     select col1, col2, sampledatecollected, 
      (Select MAX(AvailMemSlope) FROM SlopeCTE) * MetricID + 
      (Select MAX (AvailMemIntercept) FROM InterceptCTE) AS AvailMemTrend 
     from ?? -- the SQL in your question is incomplete 
    ) 
select year(sampledatecollected), month(sampledatecollected), 
     max(AvailMemTrend) 
from t 
group by year(sampledatecollected), month(sampledatecollected) 
order by year(sampledatecollected), month(sampledatecollected);