mssql中我要对1000多条的数据做分析,每7条做循环,找到最大值插到临时表中,大神如何实现
发布网友
发布时间:2022-05-12 16:45
我来回答
共3个回答
热心网友
时间:2023-10-14 06:12
如果可能,尽量不要使用循环啊游标啊什么的,麻烦又低效。
直接根据星期对数据做group by,求出每周的max(number)就行了。
create table tt5 (date varchar(10),number decimal(38,6))
insert into tt5
select '20100607',37659 union all
select '20100608',45359 union all
select '20100609',45837 union all
select '20100610',49100 union all
select '20100611',36957 union all
select '20100612',36965 union all
select '20100613',48071 union all
select '20100614',49712 union all
select '20100615',84463 union all
select '20100616',74310 union all
select '20100617',38621
set datefirst 1;
select cast(t.[year] as varchar)+'年第'+cast(t.[week] as varchar)+'周' [week],max(t.number) maxNumber from (
select datepart(year,[date]) [year],datepart(week,[date]) [week],number from tt5
) t
group by t.[year],t.[week];
set datefirst 7;
结果如下:
追问谢谢,请问我的date是int型的,能用这样做吗 结果运行:
Arithmetic overflow error converting expression to data type datetime.
还有一个问题,我想知道那一天是星期几,请大神在帮下忙,上面的溢出问题我已经解决
追答需要知道星期几的话,像这样
datepart(dw,getdate())
热心网友
时间:2023-10-14 06:12
从中找到什么最大值?1~7条是怎么规定的?
热心网友
时间:2023-10-14 06:13
上表结构,示例数据.比较好分析.追问我抽过来的数据只有两个字段,分别是日期和数量,日期和数量我都以int型保存,我想以日期为判断前提,如果日期小于一个时间点,我在其中的日期做1~7循环,找到最大值。
追答建议上示例数据或者截图.这样说了半天大家也不知道你的数据是什么样子的.