SQL中怎样对datetime数据类型按日期分组

来源:百度知道 编辑:UC知道 时间:2024/05/05 09:22:40
现在是这样:
日期 金额
2008-05-21 22:15:56.577 930.699998
2008-05-22 07:02:23.437 330.828999
---------------------------------------
想要显示:
日期 金额
2008-05-21 930.699998
2008-05-22 330.828999
create procedure test1
@fristday datetime,
@lastday datetime
as
select recmaster.recdtm as '日期',sum(recdetail.recprc) as '金额'
from recmaster,recdetail
where recmaster.billno=recdetail.billno and recmaster.depoid=recdetail.depoid
group by CONVERT(varchar(12) , recmaster.recdtm, 111 ),recdetail.recprc
having recmaster.recdtm>=@fristday and recmaster.recdtm<=@lastday order by recmaster.recdtm
go
这个是我写的,错误在上面
消息 8121,级别 16,状态 1,过程 test1,第 5 行
HAVING 子句中的列 'recmaster.recDtm' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
消息 8121,级别 16,状态 1,过程 test1,第 5 行
HAVING 子句中的列 'recmaster.recDtm' 无效,因为该

select left(日期,charindex(日期,' ')) as '日期',sum(金额) as '金额' form 表 group by left(日期,charindex(日期,' '))

看你分组是用来干什么的 如果是要同组时间的金额相加 那 sum(金额) as '金额' 部分不变
如果是其他造作改sum为:

求组中最大: max
求组中最小: min

求行数:cout

转换后如果日期列是datetime的话这样写:
select cast(convert(varchar(10),日期,120) as datetime),金额 from 表

转换后如果日期列为varchar型的话这样写:
select convert(varchar(10),日期,120),金额 from 表

以上,希望对你有所帮助!

正确答案应该是这样的:
select 日期,金额
from 表名
group by convert(varchar(10),日期,126),金额

select CONVERT(varchar(12) , 日期, 23 ) as '日期',金额 from table1