报表-SQL按周数和年份分组

拉尔夫

我有一个temperatures带有列mac_addressvarchar(255),tmdatetime,temperaturefloat的表。我想用3个参数创建报告:mac_addressweek_numberyear

报告中应显示maximum temperature某些mac_address确定的week_number(01,... 50,...)中的确定year某些week_numberyear...可能有1行以上...

数据集的SQL查询可能类似于

select max(temperature), mac_address, tm
from temperatures
group by mac_address
having mac_address = @mac_address and week_number = @week_number and year = @year

您知道如何正确构造查询吗?也许我将需要3个以上的数据集。对于@mac_address参数,这很容易。我会

select distinct mac_address from temperatures

但是,如何使用@week_number和@year参数呢?是唯一手动添加下拉列表的值的选项吗?

可能的结果可能是:当用户从参数mac_address001、47week_numberyear2019中选择时

max_temperature | tm
27.8              t1
27.8              t2
27.8              t3

现在,它返回3行。大多数时候只有一排。

瑞安·怀德瑞(Ryan Wildry)

根据您对问题的了解,您希望按进行动态搜索weeknumbermac_addressyear返回该范围内每天匹配的最高温度。如下查询将满足您的需求。

declare @macaddress varchar(255) = '2', @WeekNumber int = 36, @year int = 2019

Select 
  Date = tm,
  Temperature = max(temperature)
from 
  Temps t
where 
  year(tm)=@year 
  and mac_address=@macaddress 
  and datepart(week,tm) = @WeekNumber
 group by
   tm

如果要在结果中包含mac_address,只需将其添加到“选择”和“分组依据”部分。

这是带有测试设置SQL提琴

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章