求一条sql语句

largo 2007-03-21 11:18:58
有这么一张表:
id 姓名 性别 职位 基本工资 岗位工资 外出补贴 日期
1 无名 男 工程师 3000 2000 200 2007-01-01
2 无名 男 工程师 3000 2000 100 2007-01-03
3 子虚 男 工程师 2500 2000 150 2007-01-02
4 子虚 男 工程师 2500 2000 100 2007-01-05
5 子虚 男 工程师 2500 2000 50 2007-01-06
6 乌有 女 行政助理 1500 1000 50 2007-01-07

希望得到的查询结果:
id 姓名 性别 职位 基本工资 岗位工资 外出补贴 日期
1 无名 男 工程师 3000 2000 200 2007-01-01
2 无名 男 工程师 0 0 100 2007-01-03
3 子虚 男 工程师 2500 2000 150 2007-01-02
4 子虚 男 工程师 0 0 100 2007-01-05
5 子虚 男 工程师 0 0 50 2007-01-06
6 乌有 女 行政助理 1500 1000 50 2007-01-07
...全文
124 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
OracleRoob 2007-03-21
  • 打赏
  • 举报
回复

create table #t(id int,姓名 varchar(20),性别 varchar(10),职位 varchar(20),基本工资 int, 岗位工资 int,外出补贴 int,日期 datetime)

insert into #t
select 1,'无名','男','工程师',3000 , 2000, 200, '2007-01-01' union all
select 2,'无名','男','工程师',3000 , 2000, 100, '2007-01-03' union all
select 3,'子虚','男','工程师',2500 , 2000, 150, '2007-01-02' union all
select 4,'子虚','男','工程师',2500 , 2000, 100, '2007-01-05' union all
select 5,'子虚','男','工程师',2500 , 2000, 50 , '2007-01-06' union all
select 6,'乌有','女','行政助理', 1500 , 1000, 50 , '2007-01-07'


select
id,
姓名 ,
性别,
职位,
(case when id= (select min(id) from #t where 姓名=A.姓名) then 基本工资 else 0 end) as 基本工资,
(case when id= (select min(id) from #t where 姓名=A.姓名) then 岗位工资 else 0 end) as 岗位工资,
外出补贴,
日期
from #t as A

drop table #t
marco08 2007-03-21
  • 打赏
  • 举报
回复
--result
id 姓名 性别 职位 基本工资 岗位工资 外出补贴 日期
----------- -------------------- -------------------- -------------------- ----------- ----------- ----------- ------------------------------------------------------
1 无名 男 工程师 3000 2000 200 2007-01-01 00:00:00.000
2 无名 男 工程师 0 0 100 2007-01-03 00:00:00.000
3 子虚 男 工程师 2500 2000 150 2007-01-02 00:00:00.000
4 子虚 男 工程师 0 0 100 2007-01-05 00:00:00.000
5 子虚 男 工程师 0 0 50 2007-01-06 00:00:00.000
6 乌有 女 行政助理 1500 1000 50 2007-01-07 00:00:00.000

(6 row(s) affected)
marco08 2007-03-21
  • 打赏
  • 举报
回复
create table T(id int, 姓名 varchar(20), 性别 varchar(20), 职位 varchar(20), 基本工资 int, 岗位工资 int, 外出补贴 int, 日期 datetime)
insert T select 1, '无名', '男', '工程师', 3000, 2000, 200, '2007-01-01'
union all select 2, '无名', '男', '工程师', 3000, 2000, 100, '2007-01-03'
union all select 3, '子虚', '男', '工程师', 2500, 2000, 150, '2007-01-02'
union all select 4, '子虚', '男', '工程师', 2500, 2000, 100, '2007-01-05'
union all select 5, '子虚', '男', '工程师', 2500, 2000, 50, '2007-01-06'
union all select 6, '乌有', '女', '行政助理', 1500, 1000, 50, '2007-01-07'

select id, 姓名, 性别, 职位,
基本工资=case when id=(select min(id) from T where 姓名=tmp.姓名) then 基本工资 else 0 end,
岗位工资=case when id=(select min(id) from T where 姓名=tmp.姓名) then 岗位工资 else 0 end,
外出补贴, 日期
from T as tmp

34,593

社区成员

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

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