sql统计的语句

cqq 2011-06-16 03:09:57
photo表结构
photoid title status confirmdate
1 图片1 0 2011-06-14
2 图片2 0 2011-06-16
3 图片3 1 2011-06-16


需求是,按日期统计,每天的不同状态的图片有多少个

结果是这样子的

confirmdate status0 status1
2011-6-14 1 0
2011-6-16 1 1
...全文
133 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
东那个升 2011-06-16
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
select @sql = isnull(@sql + '],[' , '') + ltrim(status) from test group by status
set @sql = '[' + @sql + ']'
exec ('select * from (select confirmdate,status,count(1) as num from test
group by confirmdate,status) a pivot (max(num) for status in (' + @sql + ')) b')

confirmdate 0 1
----------------------- ----------- -----------
2011-06-14 00:00:00.000 1 NULL
2011-06-16 00:00:00.000 1 1

(2 行受影响)
东那个升 2011-06-16
  • 打赏
  • 举报
回复
create table test(photoid int,title varchar(20),status  int,confirmdate datetime)

insert test select 1 ,'图片1', 0 ,'2011-06-14'
insert test select 2 ,'图片2', 0 ,'2011-06-16'
insert test select 3 ,'图片3', 1 ,'2011-06-16'



declare @sql varchar(8000)
set @sql = 'select confirmdate '
select @sql = @sql + ' , max(case status when ''' + ltrim(status) + ''' then num else 0 end) [ststus' + ltrim(status) + ']'
from (select status from test group by status) as a
set @sql = @sql + ' from (select confirmdate,status,count(1) as num from test
group by confirmdate,status) a group by confirmdate'
exec(@sql)

confirmdate ststus0 ststus1
----------------------- ----------- -----------
2011-06-14 00:00:00.000 1 0
2011-06-16 00:00:00.000 1 1

(2 行受影响)
挨踢直男 2011-06-16
  • 打赏
  • 举报
回复
select convert(char(10),confirmdate,120) 日期,
count(case status when 0 then 1 else null end) status0,
count(case status when 1 then 1 else null end) status1
from photo group by convert(char(10),confirmdate,120)
cd731107 2011-06-16
  • 打赏
  • 举报
回复

select confirmdate,sum(case when status=0 then 1 else 0 end) as status0,
sum(case when status=1 then 1 else 0 end) as status1
from photo
group by confirmdate
GoAwayZ 2011-06-16
  • 打赏
  • 举报
回复
select confirmdate=convert(varchar(10),confirmdate,120),
status0=sum(case when status=0 then 1 else 0 end),
status1=sum(case when status=1 then 1 else 0 end)
from photo group by convert(varchar(10),confirmdate,120),

34,590

社区成员

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

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