1.
select bh,count(distinct NAME) g_hs,sum(SFBS) g_bs,sum(SFJE) g_je
from tab1
where CE='26'
2.
select bh,count(distinct NAME) d_hs,sum(SFBS) d_bs,sum(SFJE) d_je
from tab1
where CE<>'26'
上述2个不同条件语句能写成如下方式吗:
select bh,
sum(CASE WHEN SERVFACE<>' 26' THEN SFBS ELSE 0 END) d_bs,
sum(CASE WHEN SERVFACE<>' 26' THEN SFJE ELSE 0 END) d_js,
..
..
from tab1
select bh,count(distinct NAME) g_hs,sum(SFBS) g_bs,sum(SFJE) g_je
from tab1
where CE='26'
2.
select bh,count(distinct NAME) d_hs,sum(SFBS) d_bs,sum(SFJE) d_je
from tab1
where CE<>'26'
上述2个不同条件语句能写成如下方式吗:
select bh,
sum(CASE WHEN SERVFACE<>' 26' THEN SFBS ELSE 0 END) d_bs,
sum(CASE WHEN SERVFACE<>' 26' THEN SFJE ELSE 0 END) d_js,
..
..
from tab1
from tab1
where CE='26'
group by bh
union all
select bh,count(distinct NAME) d_hs,sum(SFBS) d_bs,sum(SFJE) d_je
from tab1
where CE <>'26'
group by bh--或者
select bh,ce,count(distinct NAME) g_hs,sum(SFBS) g_bs,sum(SFJE) g_je from
(
select bh,NAME,SFBS,SFJE,(case when CE='26' then 'ce=26' else 'ce<>26' end) ce from tab1
) t
group by bh , ce
(
select bh,NAME,SFBS,SFJE,(case when CE='26' then 'ce=26' else 'ce<>26' end) ce from tab1
) t
group by bh , ce
那d_hs,d_bs,d_je在那里?
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
'ce=26' --> d_hs
'ce<>26' --> d_jsg_je , d_je 也合在sum(SFJE),分别对应如上.