SQL语句分组怎么写

SQL语句分组怎么写,第1张

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

select 公司编号,部门编号,

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的分组语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9800309.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存