我创建了一个视图
create view getWanCAndMub as select '目标' as mubiao,jan,feb,mar,apr,may,jun,jul,aug,sept,oct,nov,dec,yeargoal from work_AreaGoal where year=''+DateName(year,GetDate())+'' union all select '完成' as wanch ,yi,er,san,si,wu,liu,qi,ba,jiu,shi,shiyi,shier,quannian from getTongJi end
select * from getWanCAndMub
查询出的结果是:
现在我想在数据库里面做操作。
想统计:完成-目标的值。 现在如何操作。结果例如:
select sum(case when mubiao=='目标' then -(jian) end) yi,....... from getWanCAndMub
类似上面写,第一个yi是这么写,之后我用省略号,你懂得,试试看
懂了,你知道除怎么解决吗? 完成/目标
@最初的、天空:
大哥,这个简单啊,max(case when mubiao=='目标' then ‘完成/目标’) as b
@fly in ocean: 不对吧。 我想得到的结果是这样的。
@最初的、天空:
话说
这个效果实现了吗,要是实现上面的效果,你在视图之前做吧,这个有点难度
@最初的、天空: 你这个思路有问题啊!!你要解决问题,如果没有限制你在一个Select语句里实现,你干嘛要钻牛角尖呢?!所以,你可以用存储过程,写游标等等。
你非要钻进来,我也没办法,提供你思路:这种行运算你只能借助统计函数来做,如果不能转化为平均函数和sum函数,那只能先将行转为列,列是可以进行运算的,然后再将运算后的列转为行,传统列和行的转换一般用Case来完成(Sql server),新版本的有扩展的转换语句了,去查PIVOT关键字。语句我不给你写了,提供一个思路。
1、修改目标的Sql语句,全部变为负数
2、然后union
3、然后group by 做Sum运算
大侠,如何去写?
用个自连接就能解决了~
SELECT '完成-目标',t2.jan-t1.jan,... FROM (select id=1,* from getWanCAndMub WHERE mubiao='目标') t1 JOIN (select id=1,* from getWanCAndMub WHERE mubiao='完成') t2 ON t1.id=t2.id
楼上所说的,行转列挺好的。