sql server 2008怎么把同一个表根据不同条件查询出来的两列(一个表查询一列)连起来变成两列输出
答案:2 悬赏:0 手机版
解决时间 2021-03-02 04:28
- 提问者网友:咪咪
- 2021-03-01 13:00
sql server 2008怎么把同一个表根据不同条件查询出来的两列(一个表查询一列)连起来变成两列输出
最佳答案
- 五星知识达人网友:杯酒困英雄
- 2021-03-01 13:15
select a.1,b.1 from table1 a,table1 b where a.column1 = condition1 and b.column2 = condition2;
全部回答
- 1楼网友:轻熟杀无赦
- 2021-03-01 14:45
第一个结果的格式, 你先看看?合适不合适?
with mycte as (
select
row_number() over(partition by begin_time, end_time, left(op_id,1) order by op_id) as no,
operator.*
from
operator
)
select
begin_time as [开始时间],
end_time as [结束时间],
max(case when left(op_id,1) = '1' then op_id else '' end) as [一组工号],
max(case when left(op_id,1) = '1' then work_time else null end) as [工作时长],
max(case when left(op_id,1) = '2' then op_id else '' end) as [二组工号],
max(case when left(op_id,1) = '2' then work_time else null end) as [工作时长],
max(case when left(op_id,1) = '3' then op_id else '' end) as [三组工号],
max(case when left(op_id,1) = '3' then work_time else null end) as [工作时长]
from
mycte
group by
begin_time, end_time, no
第二个结果的格式
select
begin_time as [开始时间],
end_time as [结束时间],
sum( case when left(op_id,1) = '1' then 1 else 0 end ) as [一组上班人数],
sum( case when left(op_id,1) = '2' then 1 else 0 end ) as [二组上班人数],
sum( case when left(op_id,1) = '3' then 1 else 0 end ) as [三组上班人数]
from
operator
group by
begin_time, end_time
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯