关于一个统计的SQL(100分)

  • 主题发起人 主题发起人 飘雪
  • 开始时间 开始时间

飘雪

Unregistered / Unconfirmed
GUEST, unregistred user!
要把以下表
date1 date2 memo
2005.1.1 2005.1.2 fgs
2005.1.1 2005.1.3 fgs
2005.1.2 2005.1.3 fgs
2005.1.3 2005.1.3 fgs

转换成
date1 count
2005.1.1 2
2005.1.2 3
2005.1.3 3
请问除了用循环做之外,还有别的方法没?
 
select date1,count(date1) from TableName
Group By date1
 
to:andy_lim
你这个是错的,得不到我要的结果的
 
你规律都不说,别人怎么给语句?
 
相当于求每一天的记录数
date1 date2 memo
2005.1.1 2005.1.2 fgs
2005.1.1 2005.1.3 fgs
2005.1.2 2005.1.3 fgs
2005.1.3 2005.1.3 fgs
分解为
2005.1.1 2005.1.1 fgs
2005.1.2 2005.1.2 fgs
2005.1.1 2005.1.1 fgs
2005.1.2 2005.1.2 fgs
2005.1.3 2005.1.3 fgs
2005.1.2 2005.1.2 fgs
2005.1.3 2005.1.3 fgs
2005.1.3 2005.1.3 fgs
 
是要统计三个日期各自出现的次数吗?那应该是
date1 count
2005.1.1 2
2005.1.2 2
2005.1.3 4
啊,你的是怎么得来的结果?
select date0 as date,Sum(count) from
(select date1 as date0,
count(date1) as count
from TableName
Union all
select date2,
count(date2)
from TableName
group by date0 ASC)
group by date ASC
如果是统计date1和date2列中出现的日期,应该可以这样做
 
怎么样了?解决问题的话就结贴
 
to:在世寻欢
是要统计三个日期各自出现的次数吗? 从这句话可以看出,你并没有了解我所提的问题,可想而知你的语句也不会对到那去。
如果我的数据有很多的话,要想生成
2005.1.1
2005.1.2
2005.1.3
....
...
2005.1.31
的数据,那我请问你又怎么做?
因此我才有下面一问
请问除了用循环做之外,还有别的方法没?
 
你要说按照什么规律
date1 date2 memo
2005.1.1 2005.1.2 fgs
2005.1.1 2005.1.3 fgs
2005.1.2 2005.1.3 fgs
2005.1.3 2005.1.3 fgs
分解为
2005.1.1 2005.1.1 fgs
2005.1.2 2005.1.2 fgs
2005.1.1 2005.1.1 fgs
2005.1.2 2005.1.2 fgs
2005.1.3 2005.1.3 fgs
2005.1.2 2005.1.2 fgs
2005.1.3 2005.1.3 fgs
2005.1.3 2005.1.3 fgs
又是什么意思?
不太懂!
 
除了用循环做之外,好像没有别的方法
 
select date1,substring(date2,8,1) as [count] from TableName Group By date1
 
他的数据应该解释一下:
data1字段:应该是日期的起始日期
data2字段:应该是日期的结束日期
比如说
data1 data2
2005.1.1 2005.1.2
表示从2005年1月1日到1月2日,共计两天。
而他的COUNT应该是data1的数值(当天)共计出现的次数,我想完成这个统计功能,用一个SQL语句很难实现吧,至少我是想不出来,呵呵。
 
1。access方法:
select date1, count(*) from
(
select date1,date2,[memo] from t
union all
select date2,iif(date2=date1,'不统计',date2),[memo] from t
) As Table1 where date2<>'不统计' group by date1
2。sqlserver方法
select date1, count(*) from
(
select date1,date2,[memo] from t
union all
select date2,case when date2=date1 then
'不统计' else
date2 end,[memo] from t
) as Table1 where date2<>'不统计' group by date1
3。通用简单方法:
select date1, count(*) from
(
select date1,date2,[memo] from t
union all
select date2,date2, [memo] from t where date1<>date2
) As Table1 group by date1
 
一头雾水,问问题说不清楚,态度还那么差,人家是在热心帮你,你以为呢?
 
在SQLServer上测试的
select a.date1, count(*) from (select distinct date1 from table) a, table b
where a.date1 between b.date1 and b.date2 group by a.date1
 

Similar threads

S
回复
0
查看
730
SUNSTONE的Delphi笔记
S
S
回复
0
查看
738
SUNSTONE的Delphi笔记
S
后退
顶部