当前位置: 代码迷 >> Sql Server >> 把两个SQL语句合并成一个查询结果,该怎么解决
  详细解决方案

把两个SQL语句合并成一个查询结果,该怎么解决

热度:4   发布时间:2016-04-24 10:09:10.0
把两个SQL语句合并成一个查询结果
--白天大班
select J_User_id,SUM(J_Hour) as 课时1 from ChildrenTeachingLog where datepart(hh,J_EDate)<19 and J_StudentNo>=5 group by J_User_id 

--白天小班
select J_User_id,SUM(J_Hour) as 课时2 from ChildrenTeachingLog where datepart(hh,J_EDate)<19 and J_StudentNo<5 group by J_User_id 


最终的效果是这样的

------解决方案--------------------

SELECT J_User_id,SUM([课时1]) as [课时1],SUM([课时2])  as [课时2] FROM 
(
SELECT J_User_id,CASE WHEN J_StudentNo>=5 THEN J_Hour ELSE 0 END AS [课时1]
,CASE WHEN J_StudentNo<5 THEN J_Hour ELSE 0 END AS [课时2]
from #ChildrenTeachingLog where datepart(hh,J_EDate)<19
) t
group by J_User_id 


J_User_id  课时1         课时2
---------- ----------- -----------
A          10          13
B          5           0
C          0           6

(3 行受影响)

------解决方案--------------------
select 
   J_User_id,
   sum(case when J_StudentNo>=5 then J_Hour else 0 end) as 课时1,
    sum(case when J_StudentNo<5 then J_Hour else 0 end)   as  课时2
from
     ChildrenTeachingLog 
where
    datepart(hh,J_EDate)<19
group by
    J_User_id
  相关解决方案