以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]快速获取数据库中日期的最大值和最小值 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=122126) |
-- 作者:188802386 -- 发布时间:2018/7/19 13:34:00 -- [求助]快速获取数据库中日期的最大值和最小值 但是耗时比较久,请问有没好的方法能快速获取最大最小日期
|
-- 作者:有点甜 -- 发布时间:2018/7/19 16:28:00 -- 参考这个做法 ExecuteValues,如果是最大max,如果最小min
Dim cmd As new SQLCommand [此贴子已经被作者于2018/7/19 16:27:53编辑过]
|
-- 作者:188802386 -- 发布时间:2018/7/19 20:14:00 -- Dim cmd As new SQLCommand cmd.Con nectionName = cmd.Com mandText = "select max(year(结佣日)) as 最大结佣年,max(month(结佣日)) as 最大结佣月,min(month(结佣日)) as 最小结佣月 fr om {YW_佣金管理} Where Year(结佣日) = Year(GetDate()) " dt = cmd.Exe cuteReader() Dim ma As String = dt.compute("max(最大结佣月)") Dim maa As String = dt.compute("max(最大结佣年)") Dim su As String For i As Integer = 1 To ma su = su & ",sum(case when month(结佣日) = " & i & " then 已收佣金 else 0 end) as [" & i & "]" Next Dim s As String="SELECT max(_identify) as _identify,部门所属, 部门名称 " & su & " FR OM {YW_佣金管理} Where Year(结佣日) = " & maa & " GROUP BY 部门所属, 部门名称" msgbox(s) 这种能统计到今年每自然月的佣金,但是我们不是以自然月算的,请问如何把 month(Case When Day(结佣日) > 28 Then DateAdd(d,3,结佣日) Else 结佣日 End) 放进sql里面去,使其统计统计从上月的29号只统计月的28日
|
-- 作者:有点甜 -- 发布时间:2018/7/19 20:29:00 -- 比如 max(year(结佣日))
就要改成,如 max(Year(Case When Day(结佣日) > 28 Then DateAdd(d,3,结佣日) Else 结佣日 End))
月份的也类似那样。如果还有问题,做个例子发上来测试吧。 |