涉及天数的小计问题

echo_llee 2001-12-05 02:50:05
若数据结构如下:
dtime name shop amount
2001-12-1 13:00:23 王 铅笔 10
2001-12-1 14:12:22 王 钢笔 20
2001-12-1 16:02:00 王 铅笔 10
2001-12-1 17:00:23 李 铅笔 10
2001-12-1 18:12:22 李 钢笔 10
2001-12-2 19:02:00 王 铅笔 10
2001-12-2 16:02:00 王 毛笔 10
2001-12-2 17:00:23 李 铅笔 10
现要得到如下结果:
dtime name amount
2001-12-1 王 40
2001-12-1 李 20
小计 60
2001-12-2 王 20
2001-12-2 李 10
小计 30
合计 90
请问用一句sql(sql server2000)该如何写?
...全文
72 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
echo_llee 2001-12-06
  • 打赏
  • 举报
回复
谢谢灵胡,你的方法确实管用。不过,在下还有一个问题不明白,不知能否向你请教?
若我把
convert(varchar,day(dtime))+'-'+convert(varchar,month(dtime))+'-'
+convert(varchar,year(dtime))
替换成convert(varchar,left(dtime,10),102)进行小计时,sql老提示dtime未进行group by运算,我不知这是怎么回事?
echo_llee 2001-12-06
  • 打赏
  • 举报
回复
我明白了,当我将convert(varchar,left(dtime,10),102)(或convert(varchar,day(dtime))+'-'+convert(varchar,month(dtime))+'-'+convert(varchar,year(dtime))) 进行小计,并如name的处理方式一样,进行分别给值时,sql并不认为convert(varchar,left(dtime,10),102)是一个整体,而是拆分开来,因而他找不到dtime的具体值,所以取值应是max (or min).
killingfield 2001-12-05
  • 打赏
  • 举报
回复
请注意:
--日期的格式有点不相符合,调整一下即可
--小计的日期无法去掉,应该不影响大局
--给分吧,呵呵
killingfield 2001-12-05
  • 打赏
  • 举报
回复
select
convert(varchar,day(dtime))+'-'+convert(varchar,month(dtime))+'-'
+convert(varchar,year(dtime)) as dtime,

name=
case
when(grouping(convert(varchar,day(dtime))+'-'+convert(varchar,month (dtime))+'-'+convert(varchar,year(dtime)))=1) then '合计'
else isnull(name,'小计')
end,

sum(amount) as amount
from test
group by convert(varchar,day(dtime))+'-'+convert(varchar,month(dtime))+
'-'+convert(varchar,year(dtime)),
name
with rollup
echo_llee 2001-12-05
  • 打赏
  • 举报
回复
问题是小计时并不是单纯按dtime字段小计,而是取其前十位即直到天而不是到秒进行小计。这才是问题的关键所在。该怎么写呢?
net_steven 2001-12-05
  • 打赏
  • 举报
回复
参考rollup 运算符:
-------------------------------------------------------------------
Item Color Quantity
-------------------- -------------------- --------------------------
Table Blue 124
Table Red 223
Chair Blue 101
Chair Red 210

下列查询将生成小计报表:

SELECT CASE WHEN (GROUPING(Item) = 1) THEN 'ALL'
ELSE ISNULL(Item, 'UNKNOWN')
END AS Item,
CASE WHEN (GROUPING(Color) = 1) THEN 'ALL'
ELSE ISNULL(Color, 'UNKNOWN')
END AS Color,
SUM(Quantity) AS QtySum
FROM Inventory
GROUP BY Item, Color WITH ROLLUP

Item Color QtySum
-------------------- -------------------- --------------------------
Chair Blue 101.00
Chair Red 210.00
Chair ALL 311.00
Table Blue 124.00
Table Red 223.00
Table ALL 347.00
ALL ALL 658.00

(7 row(s) affected)

基于C++和QT实现的酒店客房入住管理系统设计 开发工具:Qt Creator 数据库:Access 开发技术:QT,C++ 这是一个基于QT这个跨平台的c++开发框架设计,实现了酒店管理员登录系统后对酒店房间的查询,客人入住办理登记,客人离店办理自动退房和结算住房费用,查询酒店住房历史营业记录等,是学习C++框架QT的精品好例子,里面涉及了数据库的操作类的使用。 (1)登录功能、密码修改功能,用于酒店管理员的信息管理,可用于酒店入住信息管理系统的登陆,系统的用户必须具有合理的帐号方可进入此系统; (2)客房查询功能,用于酒店客房的信息管理,一家酒店的经营管理靠的就是对酒店的管理,对客房的数量进行统计,包括客房号、房间号等,可以知悉客房入住情况; (3)登记入住功能,用于客户信息管理,除了对入住的客户信息进行管理,在登记入住时,需要登记客户信息,还要对之前入住过的客户进行信息管理,方便后期的记录查询; (4)退房查询功能,用于帮助住客结算入住酒店的费用,根据用户身份证号查询到入住的信息以及入住天数,根据系统估算费用; (5)记录查询功能,用于入住记录信息管理,可以通过输入身份证号得到该住客的入住记录信息。 登录账号密码:2/2 - -------- <项目介绍> 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
课 程 设 计 报 告 书 专 业: 信息管理与信息系统 课程设计名称: 《数据库原理及应用》 题 目: 人事管理系统 班 级: XXXXXXX 设 计 者: XXX 完 成 时 间: 2010-06-18 一:需求分析 通过实际调查,要求本系统具有以下功能: 1)良好的人机界面 2)要求实现一定的权限管理 3)方便的数据查询功能 4)方便的添加,删除和修改数据功能 二:开发工具选择 本系统采用SQL Server 2005创建后台数据库,前台开发工具利用Visual Studio 2005进行开发,同时运用一定C#语言的辅助 三:系统功能设计 要设计一个完备的企业人事管理系统,需涉及大量的信息,因目前还未涉及C#语言的学 习,只能简化系统设计,只选取与企业基本信息紧密相关的部门信息,员工信息以及考 勤信息等进行管理。具体规划的模块如下: 1. 部门信息管理:包括部门信息的查询,修改,添加,删除等功能 2. 员工信息管理:包括员工基本信息的查询,修改,添加,删除等功能 3. 考勤信息管理:包括考勤信息的录入,查看等功能 四:系统功能设计 根据功能的关联关系,将功能细化为下图所示的功能结构图(图1),其业务流程如图( 2)所示。 图(1) 图(2) 五:系统数据库设计 1:实体E-R图 根据人事管理系统的系统分析与功能设计,人事管理系统中主要包括部门信息实体 ,员工信息实体,职位信息实体,考勤信息实体等,下面为它们的E-R图: 实体E- R图 2:由实体E-R图得到的关系模式如下: 员工表(员工编号 姓名 性别 职位 学历 所属部门 联系电话 出生年月 政治面貌 婚姻状况) 部门表(部门编号 部门名称 负责人 办公室) 考勤表(员工编号 考勤编号 考勤月份 出差天数 病假天数 事假天数) 职位表(职位编号 职位名称 所属部门) 婚姻表(员工编号 婚姻状况) 政治面貌表(员工编号 政治面貌) (说明:以上关系模式达到第三范式) 3 数据库关系图: 六:前台界面设计 1 创建项目 启动程序"Microsoft Visual Studio 2005",创建项目,创建文件夹。 2 模板页设计 添加新项——选择母版页,命名为MasterPage.master,添加一行两列的ta ble,将模板编辑区拖入右边单元格中,在左侧单元格中 添加treeciew控件,建立如图所示的目录树 再创建一模板页保存为MasterPage2.master,雷同上述操作建立如下图所示的母版页: 3.查看部门信息窗体 添加一应用模板一的web窗体,命名为ckbm.aspx,在编辑区中输入相应文本,配置数据 源,并添加gridview和detailsview控件,建立如下图所示窗体,实现部门信息的查看: 4.修改部门信息窗体 添加一应用模板一的wen窗体,命名为xgbm.aspx,在编辑区内输入相应文本,配置数据源 ,并设置其select查询属性,添加gridview控件,再配置数据源,设置其delect查询属 性和updata查询属性,建立如下图所示的窗体,实现管理员对部门信息的编辑,更改,删 除操作: 5.添加部门信息窗体 添加一应用模板一得web窗体,命名为tjbm.aspx,在编辑区内输入相应文本,配置数据 源,添加一十行两列的table,分别添加相应的label控件和textbox,最后添加两个butt on控件,分别将其text文本改为"确定""取消",配置数据源,并设置其insert查询属性 ,建立如下图所示的窗体,实现部门信息的录入: 以上为部门信息管理模块部分的窗体设计过程和示例,员工信息管理模块和考勤信息管 理模块均与其类似,应用模板一实现的均是系统管理员的权限,可以对系统内部信息添 加,删除,修改,查看,下面为应用模板二的普通用户的权限实现页面,实现过程与以 上页面均为相似,以查看考勤信息页面为例: 6 母版页导航的实现 各个具体功能页面建好之后,回到模板页,将建好的目录树与相应的具体 共能页面之间建立联系,实现 导航的功能,使得用户使用时方便在各个页面之间进行转换。分别应用模 板页建立管理员和普通用户登录时的欢迎界面 7 登录窗体设计 添加新项——选择web窗体,命名为dl1.aspx,单击确定。在页面中输入相 关文本,然后添加两个hiperlink控件,并将其text 文本改为"管理员""普通用户",将其NavigateUrl设置为"gly.aspx""pty h.aspx" 将图中的"管理员"和"普通用户"分别与建好的管理员登录欢迎界面和普通 用户欢迎界面链接在一起,方便用户实现自己权限范围内 的访问和操作。 七:代码部分 在设计过程中运用到的代码,下面以几个页面源代码作为示例 1. 添加部门信息 using System; using

34,606

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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