求一条SQL命令列出工资的等级:小于1000,1000-2000,大于2000

cgjl 2008-01-22 02:26:03
工资表如下:
name gz
张三 1100
李四 800
王五 1500
赵生 2200

是这样的,我想用一条SQL命令列出工资的等级:小于1000,1000-2000,大于2000
得出以下结果:
name 小于1000 1000-2000 大于2000
张三  1100
李四 800
王五 1500
赵生 2200

请各位帮一下忙,用一条SQL语句把这个结果列出来,谢!!
...全文
1743 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
威尔亨特 2008-01-22
  • 打赏
  • 举报
回复
case when...then end as ...型
dawugui 2008-01-22
  • 打赏
  • 举报
回复
create table tb(name varchar(20),gz int)
insert into tb select '张三' ,1100
insert into tb select '李四' , 800
insert into tb select '王五' , 1500
insert into tb select '赵生' , 2200

select name ,
max(case gzjb when '小于1000' then cast(gz as varchar) else '' end) '小于1000',
max(case gzjb when '1000-2000' then cast(gz as varchar) else '' end) '1000-2000',
max(case gzjb when '大于2000' then cast(gz as varchar) else '' end) '大于2000'
from
(
select name , gz , gzjb = case when gz < 1000 then '小于1000' when gz >= 1000 and gz <= 2000 then '1000-2000' when gz > 2000 then '大于2000' end from tb
) t
group by name

drop table tb

/*
name 小于1000 1000-2000 大于2000
-------------------- ------------------------------ ------------------------------ ------------------------------
李四 800
王五 1500
张三 1100
赵生 2200

(所影响的行数为 4 行)
*/
dawugui 2008-01-22
  • 打赏
  • 举报
回复
create table tb(name varchar(20),gz int)
insert into tb select '张三' ,1100
insert into tb select '李四' , 800
insert into tb select '王五' , 1500
insert into tb select '赵生' , 2200

select name ,
max(case gzjb when '小于1000' then gz else 0 end) '小于1000',
max(case gzjb when '1000-2000' then gz else 0 end) '1000-2000',
max(case gzjb when '大于2000' then gz else 0 end) '大于2000'
from
(
select name , gz , gzjb = case when gz < 1000 then '小于1000' when gz >= 1000 and gz <= 2000 then '1000-2000' when gz > 2000 then '大于2000' end from tb
) t
group by name

drop table tb

/*
name 小于1000 1000-2000 大于2000
-------------------- ----------- ----------- -----------
李四 800 0 0
王五 0 1500 0
张三 0 1100 0
赵生 0 0 2200

(所影响的行数为 4 行)
*/
yang_dgut 2008-01-22
  • 打赏
  • 举报
回复
[code=SQL][/select name
,sum(case when gz<1000 then gz end) as '<1000'
,sum(case when gz>=1000 and gz<=2000 then gz end) as '1000-2000'
,sum(case when gz>2000 then gz end) as '>2000'
from 工资表 Group by name
]
yanling1984 2008-01-22
  • 打赏
  • 举报
回复

select [name],
case when gz<1000 then gz else null end '小于1000',
case when gz>1000 and gz<2000 then gz else null end '1000~2000',
case when gz>2000 then gz else null end '大于2000'
from test
wzy_love_sly 2008-01-22
  • 打赏
  • 举报
回复
name	小于1000	1000~2000	大于2000
李四 800
王五 1500
张三 1100
赵生 2200


楼上怎么到一起了?
wzy_love_sly 2008-01-22
  • 打赏
  • 举报
回复
create table tb(name varchar(20),gz int)
insert into tb select '张三',1100
insert into tb select '李四' , 800
insert into tb select '王五' , 1500
insert into tb select '赵生' , 2200

select name ,
max(case when gz <1000 then ltrim(gz) else '' end) as [小于1000],
max(case when gz between 1000 and 2000 then ltrim(gz) else '' end) as [1000~2000],
max(case when gz> 2000 then ltrim(gz) else '' end) as [大于2000]
from tb
group by name


name 小于1000 1000~2000 大于2000
李四 800
王五 1500
张三 1100
赵生 2200
wzy_love_sly 2008-01-22
  • 打赏
  • 举报
回复
create table tb(name varchar(20),gz int)
insert into tb select '张三',1100
insert into tb select '李四' , 800
insert into tb select '王五' , 1500
insert into tb select '赵生' , 2200

select name ,
max(case when gz <1000 then gz else 0 end) as [小于1000],
max(case when gz between 1000 and 2000 then gz else 0 end) as [1000~2000],
max(case when gz> 2000 then gz else 0 end) as [大于2000]
from tb
group by name


name 小于1000 1000~2000 大于2000
李四 800 0 0
王五 0 1500 0
张三 0 1100 0
赵生 0 0 2200
ORARichard 2008-01-22
  • 打赏
  • 举报
回复

select name
,case when gz<1000 then gz end [<1000]
,case when gz>=1000 and gz<=2000 then gz end [1000-2000]
,case when gz>2000 then gz end [>2000]
from 工资表
liangCK 2008-01-22
  • 打赏
  • 举报
回复
create table tb(name varchar(20),gz int)

insert into tb select '张三',1100
insert into tb select '李四' , 800
insert into tb select '王五' , 1500
insert into tb select '赵生' , 2200

select name
,[小于1000]=max(case when gz <1000 then cast(gz as varchar) else '' end)
,[1000~2000]=max(case when gz> 1000 and gz <=2000 then cast(gz as varchar) else '' end)
,[大于2000]=max(case when gz> 2000 then cast(gz as varchar) else '' end)
from tb
group by name

drop table tb

/*
name 小于1000 1000~2000 大于2000
-------------------- --------------- ------------------ ------------------------------
李四 800
王五 1500
张三 1100
赵生 2200

(所影响的行数为 4 行)
*/
liangCK 2008-01-22
  • 打赏
  • 举报
回复
create table tb(name varchar(20),gz int)

insert into tb select '张三',1100
insert into tb select '李四' , 800
insert into tb select '王五' , 1500
insert into tb select '赵生' , 2200

select name
,[小于1000]=max(case when gz <1000 then gz else 0 end)
,[1000~2000]=max(case when gz> 1000 and gz <=2000 then gz else 0 end)
,[大于2000]=max(case when gz> 2000 then gz else 0 end)
from tb
group by name

drop table tb

/*
name 小于1000 1000~2000 大于2000
-------------------- ----------- ----------- -----------
李四 800 0 0
王五 0 1500 0
张三 0 1100 0
赵生 0 0 2200

(所影响的行数为 4 行)
*/
liangCK 2008-01-22
  • 打赏
  • 举报
回复
create table tb(name varchar(20),gz int)

insert into tb select '张三',1100
insert into tb select '李四' , 800
insert into tb select '王五' , 1500
insert into tb select '赵生' , 2200

select name
,[小于1000]=max(case when gz <1000 then gz end)
,[1000~2000]=max(case when gz> 1000 and gz <=2000 then gz end)
,[大于2000]=max(case when gz> 2000 then gz end)
from tb
group by name

drop table tb

/*
name 小于1000 1000~2000 大于2000
-------------------- ----------- ----------- -----------
李四 800 NULL NULL
王五 NULL 1500 NULL
张三 NULL 1100 NULL
赵生 NULL NULL 2200

(所影响的行数为 4 行)
*/
liangCK 2008-01-22
  • 打赏
  • 举报
回复
select name
,[小于1000]=max(case when gz<1000 then gz end)
,[1000~2000]=max(case when gz>1000 and gz<=2000 then gz end)
,[大于2000]=max(case when gz>2000 then gz end)
from tb
group by name

34,873

社区成员

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

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