求sql语句,急

gamecbpl 2011-10-29 11:55:11
b1(xh,xm)
b2(xh,yw,ss)
b1
1,张三
2,李四
3,王五
b2
1,60,50
想得到下面结果
1,张三,差
2,李四,良
3,王五,良

请问SQL要怎么写
...全文
92 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gamecbpl 2011-10-29
  • 打赏
  • 举报
回复
我想把三个人的数据放在一个结果里
gamecbpl 2011-10-29
  • 打赏
  • 举报
回复
select a.xh,a.xm,
case when b.yw+b.ss<120 then '差'
when b.yw+b.ss<80 then '良'
else '优'
end
as cj
from b1 a inner join b2 b on a.xh=b.xh

这样只会得到张三的一条数据而其它两个人没有
-晴天 2011-10-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gamecbpl 的回复:]
b1(xh,xm)
b2(xh,yw,ss)
b1
1,张三
2,李四
3,王五
b2
1,40,50
如果 yw-ss<=0 想得到下面结果
1,张三,差
2,李四,良
3,王五,良

请问SQL要怎么写
[/Quote]
又出来个yw-ss?
select a.xh,a.xm,
case when b.yw-b.ss<=0 then '差'
else '良'
end
as cj
from b1 a inner join b2 b on a.xh=b.xh
gamecbpl 2011-10-29
  • 打赏
  • 举报
回复
b2里就一条数据是张三的,其两个人没有数据
-晴天 2011-10-29
  • 打赏
  • 举报
回复
select a.xh,a.xm,
case when b.yw+b.ss<120 then '差'
when b.yw+b.ss<80 then '良'
else '优'
end
as cj
from b1 a inner join b2 b on a.xh=b.xh
gamecbpl 2011-10-29
  • 打赏
  • 举报
回复
b1(xh,xm)
b2(xh,yw,ss)
b1
1,张三
2,李四
3,王五
b2
1,40,50
如果 yw-ss<=0 想得到下面结果
1,张三,差
2,李四,良
3,王五,良

请问SQL要怎么写
dawugui 2011-10-29
  • 打赏
  • 举报
回复
张三 --1?
李四 --60?
王五 --50?

如果是这样,需要分解,然后再计算,以下是分解的例.

/*
标题:简单数据拆分(version 2.0)
作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)
时间:2010-05-07
地点:重庆航天职业学院
描述:

有表tb, 如下:
id value
----------- -----------
1 aa,bb
2 aaa,bbb,ccc
欲按id,分拆value列, 分拆后结果如下:
id value
----------- --------
1 aa
1 bb
2 aaa
2 bbb
2 ccc
*/

--1. 旧的解决方法(sql server 2000)

create table tb(id int,value varchar(30))
insert into tb values(1,'aa,bb')
insert into tb values(2,'aaa,bbb,ccc')
go

--方法1.使用临时表完成
SELECT TOP 8000 id = IDENTITY(int, 1, 1) INTO # FROM syscolumns a, syscolumns b

SELECT A.id, value = SUBSTRING(A.[value], B.id, CHARINDEX(',', A.[value] + ',', B.id) - B.id)
FROM tb A, # B
WHERE SUBSTRING(',' + A.[value], B.id, 1) = ','

DROP TABLE #

--方法2.如果数据量小,可不使用临时表
select a.id , value = substring(a.value , b.number , charindex(',' , a.value + ',' , b.number) - b.number)
from tb a join master..spt_values b
on b.type='p' and b.number between 1 and len(a.value)
where substring(',' + a.value , b.number , 1) = ','

--2. 新的解决方法(sql server 2005)
create table tb(id int,value varchar(30))
insert into tb values(1,'aa,bb')
insert into tb values(2,'aaa,bbb,ccc')
go

--方法1.使用xml完成
SELECT A.id, B.value FROM
(
SELECT id, [value] = CONVERT(xml,'<root><v>' + REPLACE([value], ',', '</v><v>') + '</v></root>') FROM tb
) A OUTER APPLY
(
SELECT value = N.v.value('.', 'varchar(100)') FROM A.[value].nodes('/root/v') N(v)
) B

--方法2.使用CTE完成
;with tt as
(select id,[value]=cast(left([value],charindex(',',[value]+',')-1) as nvarchar(100)),Split=cast(stuff([value]+',',1,charindex(',',[value]+','),'') as nvarchar(100)) from tb
union all
select id,[value]=cast(left(Split,charindex(',',Split)-1) as nvarchar(100)),Split= cast(stuff(Split,1,charindex(',',Split),'') as nvarchar(100)) from tt where split>''
)
select id,[value] from tt order by id option (MAXRECURSION 0)


DROP TABLE tb

/*
id value
----------- ------------------------------
1 aa
1 bb
2 aaa
2 bbb
2 ccc

(5 行受影响)
*/



-晴天 2011-10-29
  • 打赏
  • 举报
回复
数据不全,木法写.
--小F-- 2011-10-29
  • 打赏
  • 举报
回复
select
a.xh,a.xm,
case when isnull(b.yw,)-isnull(b.ss,0)<=0 then '差' else '良' end as cj
from
b1 a
left join b2 b on a.xh=b.xh
中国风 2011-10-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gamecbpl 的回复:]

b1(xh,xm)
b2(xh,yw,ss)
b1
1,张三
2,李四
3,王五
b2
1,40,50
如果 yw-ss<=0 想得到下面结果
1,张三,差
2,李四,良
3,王五,良

请问SQL要怎么写
[/Quote]
相同问题发一贴就行了

select
a.*,case when b.xh is not null AND b.yw-b.ss <=0 THEN '差 ' else '良 ' end
from b1 as a left join b2 as b on a.xh=b.xh
-晴天 2011-10-29
  • 打赏
  • 举报
回复
create table b1(xh int,xm varchar(10))
create table b2(xh int,yw int,ss int)
insert into b1 select 1,'张三'
insert into b1 select 2,'李四'
insert into b1 select 3,'王五'
insert into b2 select 1,40,50
go
select a.xh,a.xm,
case when b.yw-b.ss<=0 then '差'
else '良'
end
as cj
from b1 a left join b2 b on a.xh=b.xh
/*
xh xm cj
----------- ---------- ----
1 张三 差
2 李四 良
3 王五 良

(3 行受影响)
*/
go
drop table b1,b2

34,588

社区成员

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

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