问个通俗易懂的分段查询问题

ntmdbya 2009-04-23 11:53:50
表 info

chanpin youxiaoqi
A 2009-1-4
A 2009-1-8
B 2009-1-9
A 2009-2-4
A 2009-3-3
C 2009-2-4
E 2009-3-1
B 2009-1-4


想求出 2009-1-5 到 2009-2-4 和 2009-2-5 到 2009-3-4 各类别到期总数

也就是
chanpin 一月到期数   二月到期数
A 2 1
B 2 0
C 1 0
E 0 1


...全文
47 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
長胸為富 2009-04-23
  • 打赏
  • 举报
回复
select chanpin,(select count(*) from info where chanpin = t.chanpin and youxiaoqi between '2009-1-5' and '2009-2-4'),
(select count(*) from info where chanpin = t.chanpin and youxiaoqi between '2009-2-4' and '2009-2-5')
from info t
group by chanpin
ntmdbya 2009-04-23
  • 打赏
  • 举报
回复
这么多没有吃饭的兄弟,马上结贴~
-晴天 2009-04-23
  • 打赏
  • 举报
回复
create table tb(chanpin varchar(10),youxiaoqi datetime)
insert into tb select 'A','2009-1-4'
insert into tb select 'A','2009-1-8'
insert into tb select 'B','2009-1-9'
insert into tb select 'A','2009-2-4'
insert into tb select 'A','2009-3-3'
insert into tb select 'C','2009-2-4'
insert into tb select 'E','2009-3-1'
insert into tb select 'B','2009-1-4'
go
select chanpin,
sum(case when youxiaoqi between '2009-1-5' and '2009-2-4' then 1 else 0 end) as 一月到期数,
sum(case when youxiaoqi between '2009-2-5' and '2009-3-4' then 1 else 0 end) as 二月到期数
from tb group by chanpin
go
drop table tb
/*
chanpin 一月到期数 二月到期数
---------- ----------- -----------
A 2 1
B 1 0
C 1 0
E 0 1
*/
ak8800 2009-04-23
  • 打赏
  • 举报
回复
select count(*) from TBName where youxiaoqi between '2009-1-5' and '2009-2-4' or youxiaoqi between '2009-2-5' and '2009-3-4' group by chanpin
sdhdy 2009-04-23
  • 打赏
  • 举报
回复
select chanpin,一月到期数=sum(case when youxiaoqi between '2009-1-5' and '2009-2-4' then 1 else 0 end),
二月到期数=sum(case when youxiaoqi between '2009-2-5' and '2009-3-4' then 1 else 0 end)
from info group by chanpin order by chanpin

34,576

社区成员

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

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