我有一个temperatures
带有列mac_address
varchar(255),tm
datetime,temperature
float的表。我想用3个参数创建报告:mac_address
,week_number
和year
。
报告中应显示maximum temperature
某些mac_address
确定的week_number
(01,... 50,...)中的确定year
。某些week_number
和year
...可能有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_address
001、47week_number
和year
2019中选择时
max_temperature | tm
27.8 t1
27.8 t2
27.8 t3
现在,它返回3行。大多数时候只有一排。
根据您对问题的了解,您希望按进行动态搜索weeknumber
,mac_address
并year
返回该范围内每天匹配的最高温度。如下查询将满足您的需求。
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] 删除。
我来说两句