1如果你的时间格式是2012-01-13 17:35:52217这样的形式,(主要是那个01不要是1),用下面这个 SELECT convert(varchar(10),时间,23),SUM(数字数据) FROM 表 group by convert(varchar(10),时间,23) 2如果你的时间格式不是上面的格式,先转化成datetime: SELECT convert(varchar(10),cast(时间 as datetime),23) ,SUM(数字数据) FROM 表 group by convert(varchar(10),cast(时间 as datetime),23) 3如果报错,请追问~
您的回答会被数十乃至数万的网友学习和参考,所以请一定对自己的回答负责,尽可能保障您的回答准确、详细和有效表1(已有数据)——进货表name, buycount
apple 1200
banana 200
表2(已有数据) ——订单表
name, needdate, needcount
apple 2000-1-1 200
apple 2000-1-2 300
banana 2000-1-1 300
banana 2000-1-2 500
banana 2000-1-3 400
表3(当前数据)——订单需求余量表
name needdate, havecount, needcount
apple 2000-1-1 50 150
banana null 200 0 (needdate为null表明上次有结余)
要求:
每次采购后,用SQL语句根据订单需求表将数据冲入订单需求余量表。
冲入标准:
先将每种水果冲入日期早的订单,订单充满后再冲入下一日期的订单,依此循环
如果购买数大于所有订单总需求,那么表明购买多了,多的数冲入余量表后needdate为null表明为上次购买结余,下次购买水果后可使用该数量继续冲订单。
SQL执行后表3结果如下:
表3(冲数结果)
name needdate, havecount, needcount
apple 2000-1-1 200 0
apple 2000-1-2 300 0
apple null 700 0 --购买1200,冲入第一单200,第二单300,结余700
banana 2000-1-1 300 0 --上次结余200+本次购买200冲入第一单300,第二单100
banana 2000-1-2 100 400
banana 2000-1-3 0 400结果表写错了,apple应该结余750
SQL执行后表3结果如下:
表3(冲数结果)
name needdate, havecount, needcount
apple 2000-1-1 200 0
apple 2000-1-2 300 0
apple null 750 0 --购买1200,冲入第一单150(原来已经存在50),第二单300,结余750
banana 2000-1-1 300 0 --上次结余200+本次购买200冲入第一单300,第二单100
banana 2000-1-2 100 400
banana 2000-1-3 0 400可以自定义
select id,s,d,q,(s+d+q) as total from
(select id,sum(case when t='s' then 1 else 0 end) as s,
sum(case when t='d' then 1 else 0 end) as d,
sum(case when t='q' then 1 else 0 end) as q
from 表名 group by id) a
------------------补充---------
你补充的那个我用id=02的测试了一下,只能写到这种程度了
select isnull(sum(case when t='s' then 1 else 0 end),0) as s,
isnull(sum(case when t='d' then 1 else 0 end),0) as d,
isnull(sum(case when t='q' then 1 else 0 end),0) as q
from 表名 where id='02'
你上边的写错了吧?结果该是
2 2 0 4
max(case when substring(部门分组编号,1,1)='A' then 部门分组编号 else '-' end) 部门分组A,
max(case when substring(部门分组编号,1,1)='B' then 部门分组编号 else '-' end) 部门分组B,
max(case when substring(部门分组编号,1,1)='C' then 部门分组编号 else '-' end) 部门分组C,
max(case when substring(部门分组编号,1,1)='D' then 部门分组编号 else '-' end) 部门分组D
from table group by 公司编号,部门编号
然后查询出不同字段3的字段2的值,这个是什么意思,可以说明白点不?select 字段2
form table t1,table t2
where t1字段3<>t2字段3 and t1字段1=t2字段1;
是不是这个意思,才学了几天,不知道写错了没,自己上机试试!
首先掌握sql中分割字符串的方法:
declare
@sql
varchar(2000),@tsql
nvarchar(max),@split
varchar(100)
set
@sql='1,3,5,6,8'
--保存的字符
set
@split=','--分隔符
select
@tsql='select
'''+replace(@sql,@split,'''
union
all
select
''')+''''
exec(@tsql)
----完成之后将查询结果保存在一张临时表中。
然后使用
select
count()
,
字段名
from
表名
group
by
字段名
就可以得到您想要的结果了。
希望对您有所帮助!
select 测站名称,avg(温度) from test where 日期 between #2015/1/6# and #2015/8/2# group by 测站名称
这样吗?
以上就是关于SQL语句分组怎么写全部的内容,包括:SQL语句分组怎么写、SQL 分组语句求解:、帮忙写一个sql的分组语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)