征求好的算法(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来调整
...全文
36 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

34,838

社区成员

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

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