*****SQL存储过程的问题(CSDN的同仁们帮助看下,或者提供些思路)

OceanRain 2008-05-27 10:08:44
1.表结构如下(am:上午 pm:下午):
员工姓名 1am 1pm 2am 2pm 3am 3pm......
赵三 交易所 交易所 总部 休假 总部 休假
孙四 总部 休假 休假 交易所 交易所 交易所
吕五 交易所 总部 总部 休假 休假 交易所
..... ...... .......

==============================================================================

2.如何使用sql存储过程(或者SQL语句)实现下列形式
1日
交易所:赵三(全天)、吕五(上午)
总部:孙四(上午)、吕五(下午)
休假:孙四(下午)

2日
交易所:孙四(下午)
总部:赵三(上午)、吕五(上午)
休假:赵三(下午)、孙四(上午)

.......
...全文
206 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
ord_zyb 2008-10-06
  • 打赏
  • 举报
回复
先遍历每天,再遍历每个人。
ilovewalk 2008-07-25
  • 打赏
  • 举报
回复
mark.
bwu851 2008-07-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hery2002 的回复:]
还有就是你日期怎么来的,
上面只有时间,没有日期,
貌似没有看懂诶
[/Quote]
[Quote=引用 15 楼 dutguoyi 的回复:]
首先你需要维护一个逻辑,就是什么是“上午”,“下午”,“全天”。
[/Quote]
likklikk 2008-07-11
  • 打赏
  • 举报
回复
declare @t table(nm varchar(10),obj varchar(10),score int)
insert into @t
select 'a','EN',89
union all select 'a','CH',78
union all select 'a','HO',79
union all select 'b','EN',77
union all select 'b','CH',88
union all select 'b','HO',100
union all select 'c','Ht',100
--1
select ta.* from
(
select * from @t
) ta
--2
select ta.*,tb.[sum] from
(
select * from @t
pivot
(sum(score)
for obj in ([EN],[CH],[HO])
)
as pt
) ta left join
(
select nm,[sum]=sum(score)
from @t
group by nm
) tb
on (ta.nm=tb.nm)
--3
select ta.* from
(
select * from @t
pivot
(max(score)
for nm in ([a],[b])
)
as pt
) ta
sun2058 2008-07-10
  • 打赏
  • 举报
回复
MARK
新鲜鱼排 2008-07-04
  • 打赏
  • 举报
回复
首先你需要维护一个逻辑,就是什么是“上午”,“下午”,“全天”。
utpcb 2008-07-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Limpire 的回复:]
那就硬写,反正31天,不过代码很长。
[/Quote]
wgh88888888 2008-05-30
  • 打赏
  • 举报
回复
比较杂乱,就如看得很累的excel文档一样


linsyuan 2008-05-28
  • 打赏
  • 举报
回复
遍历
fengyunxnc 2008-05-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Limpire 的回复:]
那就硬写,反正31天,不过代码很长。
[/Quote]
utpcb 2008-05-28
  • 打赏
  • 举报
回复
似乎是行转列
wzy_love_sly 2008-05-27
  • 打赏
  • 举报
回复
貌似没有看懂
OceanRain 2008-05-27
  • 打赏
  • 举报
回复
需求就是这样的
hery2002 2008-05-27
  • 打赏
  • 举报
回复
还有就是你日期怎么来的,
上面只有时间,没有日期,
貌似没有看懂诶
hery2002 2008-05-27
  • 打赏
  • 举报
回复
你上下午,全天怎么判断,以1AM来判断么?
OceanRain 2008-05-27
  • 打赏
  • 举报
回复
谢谢大家,帮忙看下
dawugui 2008-05-27
  • 打赏
  • 举报
回复
看不懂,友情帮顶.
Limpire 2008-05-27
  • 打赏
  • 举报
回复
那就硬写,反正31天,不过代码很长。
OceanRain 2008-05-27
  • 打赏
  • 举报
回复
兄弟啊,一个月31天,你让我union 31次啊?
Limpire 2008-05-27
  • 打赏
  • 举报
回复
select 员工姓名,am=[1am], pm=[1pm], date=1 from 表
union all
select 员工姓名,am=[2am], pm=[2pm], date=2 from 表
union all
select 员工姓名,am=[3am], pm=[3pm], date=3 from 表
union all
...
select 员工姓名,am=[nam], pm=[npm], date=n from 表
加载更多回复(1)

6,128

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 新技术前沿
社区管理员
  • 新技术前沿社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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