走过路过,进来看下

rui90102 2010-09-07 03:33:50

有一个表它有4个字段
时间 name 备注 积分
2010-5-6 a private 50
2010-5-6 a public 30
2010-5-6 b public 40
2010-5-7 a qunfa 100

现在我要统计每天,哪个人,私聊了多少积分,公开聊了多少积分,群聊了多少积分


显示出来是这样的
日期 name 私聊/群聊/公开
2010-5-6 a 50/0/30
2010-5-6 b 0/0/40
2010-5-7 a 0/100/0
...全文
215 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
icehaopan 2010-09-07
  • 打赏
  • 举报
回复
select
c.name1,
c.dateTime1,
sum(c.siYouDe),
sum(c.gongGongDe),
sum(c.qunFaDe)
from
(select
b.name1,
b.dateTime1,

case b.beiZhu when 'private' then sum(b.jiFen) else 0
end siYouDe,
case b.beiZhu when 'public' then sum(b.jiFen) else 0
end gongGongDe,
case b.beiZhu when 'qunfa' then sum(b.jiFen) else 0
end qunFaDe
from
(select a.name as name1, a.dateTimes as dateTime1 , a.beiZhu as beiZhu, a.jiFen as jiFen
from test a
) b

where
b.beiZhu in ('public','private','qunfa')

group by
b.name1,
b.dateTime1,
b.beiZhu
)c
group by
c.name1,
c.dateTime1
icehaopan 2010-09-07
  • 打赏
  • 举报
回复
select

c.name1,
c.dateTime1,
sum(c.siYouDe) as siYouDe ,
sum(c.gongGongDe) as gongGongDe,
sum(c.qunFaDe) as qunFaDe
from

((select a.name as name1, a.dateTimes as dateTime1, a.jiFen as siYouDe , 0 as gongGongDe , 0 as qunFaDe
from test a
where a.beiZhu = 'private'
)
union
(
select a.name as name1, a.dateTimes as dateTime1, 0 as siYouDe ,a.jiFen as gongGongDe , 0 as qunFaDe
from test a
where a.beiZhu = 'public'

)
union
(
select a.name as name1, a.dateTimes as dateTime1, 0 as siYouDe ,0 as gongGongDe,a.jiFen as qunFaDe
from test a
where a.beiZhu = 'qunfa'

)
) c

group by
c.name1,
c.dateTime1
symbol_bc 2010-09-07
  • 打赏
  • 举报
回复
那你怎么区别私聊,公开聊,还是群聊呢,哪个字段标示。
rui90102 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 symbol_bc 的回复:]

什么意思,你是说备注一列要模糊查询吗?可以再最里层
SQL code

select *
,(case comment when 'private' then point end ) 'private'
,(case comment when 'public' then point end ) 'public'
,(case comment when 'qunfa' then point e……
[/Quote]

是说 备注像privateaaaa 这样的都查询出来
lthaoyue 2010-09-07
  • 打赏
  • 举报
回复
写错误应是sum
select sum(积分) as 积分 时间 name 备注
from tbl group by 时间,name,备注
lthaoyue 2010-09-07
  • 打赏
  • 举报
回复
select count(积分) as 积分 时间 name 备注
from tbl group by 时间,name,备注
symbol_bc 2010-09-07
  • 打赏
  • 举报
回复
什么意思,你是说备注一列要模糊查询吗?可以再最里层

select *
,(case comment when 'private' then point end ) 'private'
,(case comment when 'public' then point end ) 'public'
,(case comment when 'qunfa' then point end ) 'qunfa' from #1
where comment like ''

还是说comment列的值不是固定的?
rui90102 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 symbol_bc 的回复:]

SQL code

create table #1
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[createDate] [date] NULL,
[name] [nvarchar](50) NULL,
[comment] [nvarchar](50) NULL,
[point] [int] NULL
)
go

insert i……
[/Quote]

private 我要写模糊查询要怎么写呀
andyflyzhao 2010-09-07
  • 打赏
  • 举报
回复
楼上很好很强大!
symbol_bc 2010-09-07
  • 打赏
  • 举报
回复

create table #1
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[createDate] [date] NULL,
[name] [nvarchar](50) NULL,
[comment] [nvarchar](50) NULL,
[point] [int] NULL
)
go

insert into #1 (createdate ,[name],comment,point) values ('2010-05-06','a','private',50)
insert into #1 (createdate ,[name],comment,point) values ('2010-05-06','a','public',30)
insert into #1 (createdate ,[name],comment,point) values ('2010-05-06','b','public',40)
insert into #1 (createdate ,[name],comment,point) values ('2010-05-07','a','qunfa',100)

select createdate,[name],
cast(isnull([private],0) as nvarchar) + '/' + cast(isnull([public],0) as nvarchar) + '/' + cast(isnull([qunfa],0) as nvarchar)
from (
select createdate,[name],
SUM([private]) 'private',SUM([public]) 'public' ,SUM([qunfa]) 'qunfa'
from (select *
,(case comment when 'private' then point end ) 'private'
,(case comment when 'public' then point end ) 'public'
,(case comment when 'qunfa' then point end ) 'qunfa' from #1) a
group by createdate,[name]) b

drop table #1
a272174902 2010-09-07
  • 打赏
  • 举报
回复
select f.times,f.names,(case when) as 综合 from jifen as f group by f.times ,f.names

这个还没写完 前面的 日期跟name都查出来了,()里面的用case去判断实现
rui90102 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kke_007 的回复:]

select 备注 count(积分) from table where name='a' group by 备注
[/Quote]

显示方式和我的不同
kke_007 2010-09-07
  • 打赏
  • 举报
回复
select 备注 count(积分) from table where name='a' group by 备注

rui90102 2010-09-07
  • 打赏
  • 举报
回复
具体要怎么写呢
极地_雪狼 2010-09-07
  • 打赏
  • 举报
回复
感觉要用Group By

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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