select 姓名,商用=sum(case when 名称='商用' then 费用 else 0 end),
民用=sum(case when 名称='民用' then 费用 else 0 end),
sum(费用) as 费用合计
from tbl
group by 姓名
民用=sum(case when 名称='民用' then 费用 else 0 end),
sum(费用) as 费用合计
from tbl
group by 姓名
解决方案 »
- 我的数据库myer.mdf谁都可以在企业管理器中打开看,我不知道如何加密它。好像在企业管理器中打开以后,找不到建立用户名和密码的地方,请赐教。我希望只有我能用一个用户名和密码打开,如何做。谢谢!
- char和varchar的区别
- MS-sql server 与Oracle在锁表时的区别是什么呢?
- 求教怎么用这个“xp_startmail”存储过程发邮件呀!!!!!!!!!!!!
- mysql 中的系统级别和会话级别是什么意思
- 菜鸟问题,急用!希望各位大侠指教!!
- 在线等待,对拉,马上给分!!
- 请问
- 我用DELPHI执行SQL SERVER的系统过程后,怎样能得到返回值???
- 怎么让一新建用户对a数据库中100多个表,只有表1有操作权限,其他表无权限呢
- 请高手解决一个不同服务器数据库级联添加删除更新的触发器
- 求一SQL写法,谢谢
a.费用 as 商用,
b.费用 as 民用,
a.费用+b.费用 as 费用合计
from 表 (select 姓名,sum(费用) as 费用 from 表 where 名称='商用' group by 姓名) a
full join
(select 姓名,sum(费用) as 费用 from 表 where 名称='商用' group by 姓名) b
on a.姓名=b.姓名
a.费用 as 商用,
b.费用 as 民用,
a.费用+b.费用 as 费用合计
from 表 (select 姓名,sum(费用) as 费用 from 表 where 名称='商用' group by 姓名) a
full join
(select 姓名,sum(费用) as 费用 from 表 where 名称='民用' group by 姓名) b
on a.姓名=b.姓名
create function getqty(@k varchar(10),@i varchar(10))
returns varchar(500)
as
begin
declare @s varchar(500)
set @s=''
Select @s=@s+cast(費用 as varchar(10))+' + ' from test1 where 姓名=@k and 名稱=@i
set @s=substring(@s,1,len(@s)-1)
return(@s)
-----------------------------------------------------
select 姓名,商用=cast((
Select sum(費用) from test1 Where 姓名=a.姓名 and 名稱='商用' group by 姓名,名稱
) as varchar(10))+dbo.getqty(姓名,'商用'),
民用=cast((
Select sum(費用) from test1 Where 姓名=a.姓名 and 名稱='民用' group by 姓名,名稱
) as varchar(10))+dbo.getqty(姓名,'民用'),費用合計=sum(費用)
from 表 a group by 姓名end
然後再進行 一條sql語句