征求好的算法(SQL SERVER)

painus 2003-05-10 09:58:03
征求好的算法
这是一张表
CorpNo CorpName 服务时间
10001 A公司 2003-01-01
10002 B公司 2003-01-01
10003 C公司 2003-01-01
10004 A公司 2003-01-01
10001 A公司 2003-01-10
10002 B公司 2003-01-10
10003 C公司 2003-01-10
10004 D公司 2003-01-10
...

想把他搞成这个样
CorpNo CorpName 1日 2日 3日 ... 10日 .....
10001 A公司 2 0 0 1
10002 B公司 1 0 0 1
10003 C公司 1 0 0 1
10004 D公司 0 0 0 1

有没有办法实现,或者写上一个好的视图后,我再用VB来调整
...全文
7 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
painus 2003-05-12
To:: pengdali(大力) 写清楚一点,提示"在关键字 'from' 附近有语法错误。"
回复
joygxd 2003-05-12
delcare @sql varchar(8000)
set @sql = 'select CorpNo,CorpName '
select @sql =@sql + ',sum(case when day(服务时间) = ''' + day(服务时间) + ''' then 1 else 0 end) as '+ convert(varchar(10),day(服务时间))
from (select distinect day(服务时间) from table

exec (@sql+' from a group by CorpNo,CorpName ')
回复
pengdali 2003-05-12
declare @sql varchar(100)
set @sql = 'select CorpNo,CorpName '
select @sql =@sql + ',sum(case when day(服务时间)= ''' +cast(aa as varchar(10))+ ''' then 1 else 0 end) ['+cast(aa as varchar(10))+']'
from (select distinct day(服务时间) aa from 你的表) tem

exec (@sql+' from 你的表 group by CorpNo,CorpName ')
回复
pengdali 2003-05-12
提示"在关键字 'exec' <<======你那里写了exec ????

附近有语法错误
回复
caiyunxia 2003-05-10
delcare @sql varchar(100)
set @sql = 'select CorpNo,CorpName '
select @sql =@sql + ',sum(case when day(服务时间) = ''' + day(服务时间) + ''' then 1 else 0 end) as '+ convert(varchar(10),day(服务时间))
from (select distinect day(服务时间) from table

exec (@sql+' from a group by CorpNo,CorpName ')
回复
new_life 2003-05-10
select CorpNo,CorpName,
sum(case day(服务时间)=1 then 1 else 0 end) as 1日,
sum(case day(服务时间)=2 then 1 else 0 end) as 2日,
sum(case day(服务时间)=3 then 1 else 0 end) as 3日,
sum(case day(服务时间)=4 then 1 else 0 end) as 4日,
......
from A
group by corpno,corpname
回复
red9152 2003-05-10
笨方法:对“服务时间”GROUP BY 一下,建一个临时表,字段就是各个“服务时间”,然后读取临时表。
回复
painus 2003-05-10
为和我写出来通不过呢?
new_life(浮云游子) 的改为
select CorpNo,CorpName,
sum(case when day(服务时间)=1 then 1 else 0 end) as 1日,
sum(case when day(服务时间)=2 then 1 else 0 end) as 2日,
sum(case when day(服务时间)=3 then 1 else 0 end) as 3日,
sum(case when day(服务时间)=4 then 1 else 0 end) as 4日,
......
from A
group by corpno,corpname
不行
caiyunxia(monkey) 兄的为提示"在关键字 'exec' 附近有语法错误。"
我找了很久没有找到错误!
回复
yoki 2003-05-10
select CorpNo,CorpName,
sum(case day(服务时间)=1 then 1 else 0 end) as 1日,
sum(case day(服务时间)=2 then 1 else 0 end) as 2日,
sum(case day(服务时间)=3 then 1 else 0 end) as 3日,
sum(case day(服务时间)=4 then 1 else 0 end) as 4日,
......
from A
group by corpno,corpname
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2003-05-10 09:58
社区公告
暂无公告