如何提取这两个联合查询语句的共用条件呢?

yesjoy 2006-09-28 10:42:16
有问题想请教一下,如果我的两条sql语句中都有相同的一个条件,我是否可以共用呢?
比如下面两句中都有一个条件year='1996:

那么我要合并的时候是否能够只写一次啊,因为我实际项目中这个共用条件比较长,总不能都这样写吧:
select a,b from
(select sum(NUMBER_OF_PERSONS) as a from T_ES_TEACHEXPERIMENT where type='1' and year='1996)t1,
(select sum(USE_HOURS) as b from T_ES_TEACHEXPERIMENT where method in('2','3') and year='1996)t2

把共用条件提取出来但是不能影响查询结果,因为我在组织sql语句的时候想把共用的条件定义为一个变量。谢谢
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
superman_yc 2006-09-28
  • 打赏
  • 举报
回复
select
(case when type='1' then sum(NUMBER_OF_PERSONS) end) as a,
(case when method in('2','3') then sum(USE_HOURS) end) as b
from T_ES_TEACHEXPERIMENT
where year='1996'
xiaoku 2006-09-28
  • 打赏
  • 举报
回复
hibernate
这个是什么?
yesjoy 2006-09-28
  • 打赏
  • 举报
回复
hibernate中不支持这种写法:
(case when type='1' then NUMBER_OF_PERSONS else 0 end)

也不支持下面这种 :
(select sum(NUMBER_OF_PERSONS) as a from T_ES_TEACHEXPERIMENT where type='1' and year='1996)t1

有点郁闷
dulei115 2006-09-28
  • 打赏
  • 举报
回复
select sum(case when type='1' then NUMBER_OF_PERSONS end) as a,
sum(case when method in('2','3') then USE_HOURS end) as b
from T_ES_TEACHEXPERIMENT
where year='1996'
冷箫轻笛 2006-09-28
  • 打赏
  • 举报
回复
select
sum(case when type='1' then NUMBER_OF_PERSONS else 0 end) as a,
sum(case when method in('2','3') then USE_HOURS else 0 end) as b
from T_ES_TEACHEXPERIMENT
where year='1996'

这样写吧

34,576

社区成员

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

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