版主大人求救!

qq_26006573 2018-01-12 04:19:18
if OBJECT_ID(N'tempdb..#Xfs') is not null
drop table #Xfs
go
create table #Xfs --消费表
(
xf_jr int,--消费金额
xf_bm varchar(30),--部门
xf_user varchar(30),--消费人员
xf_rq datetime,--消费日期
)
GO
insert into #Xfs(xf_jr,xf_user,xf_rq,xf_bm) values('100','张三','2017-11-16 20:00:00','生产部')
GO
insert into #Xfs(xf_jr,xf_user,xf_rq,xf_bm) values('200','李四','2017-11-15 21:00:00','人事部')
GO
insert into #Xfs(xf_jr,xf_user,xf_rq,xf_bm) values('100','张三','2017-11-15 21:00:00','生产部')
GO

insert into #Xfs(xf_jr,xf_user,xf_rq,xf_bm) values('100','张三','2017-11-15 21:10:00','生产部')
GO
insert into #Xfs(xf_jr,xf_user,xf_rq,xf_bm) values('100','张三','2017-11-15 21:11:00','生产部')
GO
insert into #Xfs(xf_jr,xf_user,xf_rq,xf_bm) values('100','李四','2017-11-15 13:10:00','生产部')
GO
insert into #Xfs(xf_jr,xf_user,xf_rq,xf_bm) values('100','李四','2017-11-15 23:10:00','生产部')
GO


想要的结果是在一个指定时间内 比如2018-01-01 00:00:00 到 2018-01-30 23:59:59

07:00:00 到 08:00:00 这个时段内 第一次消费的金额和次数
11:00:00 到 12:00:00 这个时段内 第一次消费的金额和次数
以上2个时段内,合计的金额

早餐第一次消费次数 早餐第一次消费金额 午餐第一次消费次数 午餐第一次消费金额 早餐和午餐合计金额
2 30 3 50 80



万分感谢!!!!
...全文
449 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaITOldMan 2018-01-13
  • 打赏
  • 举报
回复
跟版主学了 CONVERT(time, xf_rq, 8)的用法
中国风 2018-01-12
  • 打赏
  • 举报
回复
这样? 以下为指时间范围并指定时间段次数和金额
SELECT SUM(   CASE WHEN CONVERT(VARCHAR(8), xf_rq, 8)
                        BETWEEN '07:00:00' AND '08:00:00' THEN 1
                   ELSE 0
              END
          ) AS 早餐第一次消费次数
     , SUM(   CASE WHEN CONVERT(VARCHAR(8), xf_rq, 8)
                        BETWEEN '07:00:00' AND '08:00:00' THEN xf_jr
                   ELSE 0
              END
          ) AS 早餐第一次消费金额
     , SUM(   CASE WHEN CONVERT(VARCHAR(8), xf_rq, 8)
                        BETWEEN '11:00:00' AND '12:00:00' THEN 1
                   ELSE 0
              END
          ) AS 午餐第一次消费次数
     , SUM(   CASE WHEN CONVERT(VARCHAR(8), xf_rq, 8)
                        BETWEEN '11:00:00' AND '12:00:00' THEN xf_jr
                   ELSE 0
              END
          ) AS 午餐第一次消费金额
     , SUM(xf_jr) AS 早餐和午餐合计金额
FROM #Xfs AS a
WHERE xf_rq BETWEEN '2018-01-01 00:00:00' AND '2018-01-30 23:59:59'
AND (CONVERT(VARCHAR(8), xf_rq, 8) BETWEEN '07:00:00' AND '08:00:00' OR  CONVERT(VARCHAR(8), xf_rq, 8) BETWEEN '11:00:00' AND '12:00:00');

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧