求一SQL语句,在线等候!

liutingrun 2007-12-12 02:42:49
有一职工表(表名:A)如下:

姓名(varchar) 所属民族ID 所属地区ID

张三 1 1

李四 2 0

王五 0 2


有一民族表(表名:B)如下:

民族ID(int) 民族名称(varchar)

1 汉族

2 回族


有一地区表(表名:C)如下:

地区ID(int) 地区名称(varchar)

1 中国

2 美国

现求一SQL语句实现如下结果集:


姓名 民族名称 地区

张三 汉族 中国

李四 回族 Null

王五 Null 美国

就是说主表A中凡是ID是0的字段,查询要返回NUll,如果不是0返回另一表中的实际ID对应的名称
...全文
144 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
JL99000 2008-02-19
  • 打赏
  • 举报
回复
if object_id('表a') is not null
drop table 表a
if object_id('表b') is not null
drop table 表b
if object_id('f_getstring') is not null
drop function f_getstring
go
create table 表a(出货日期 datetime,实际编号 varchar(10))
insert into 表a
select '2008-1-14','1' union all
select '2008-1-14','2' union all
select '2008-1-15','3'
create table 表b(出货日期 datetime,备注 varchar(10))
insert into 表b
select '2008-1-14',null union all
select '2008-1-15',null
go
create function f_getstring(@Out_dt datetime)
returns varchar(8000)
as
begin
declare cur cursor for select cast(实际编号 as varchar(10)) from 表a where 出货日期=@Out_dt
open cur
declare @s varchar(8000),@now varchar(10)
fetch next from cur into @now
while(@@fetch_status=0)
begin
set @s=isnull(@s,'')+@now+','
fetch next from cur into @now
end
close cur
deallocate cur
return substring(@s,1,len(@s)-1)
end

go
--如果只是查询出想要的结果
select 出货日期,dbo.f_getstring(出货日期) as 备注 from 表b
--真正的更新表b
update 表b set 备注=dbo.f_getstring(出货日期)
eodo 2008-02-19
  • 打赏
  • 举报
回复
漏了END呵呵
Select CASE姓名, 民族ID WHEN 1 THEN '汉族' ELSE '回族' END,所属地区ID WHEN 1 THEN ‘中国’ ELSE ‘美国’END FROM table_name
eodo 2008-02-19
  • 打赏
  • 举报
回复
Select CASE姓名, 民族ID WHEN 1 THEN '汉族' ELSE '回族' END,所属地区ID WHEN 1 THEN ‘中国’ ELSE ‘美国’ FROM table_name
Ynren 2008-01-24
  • 打赏
  • 举报
回复
SELECT A.姓名, B.民族名称, C.地区名称
FROM (A LEFT JOIN B ON A.所属民族ID = B.民族ID) LEFT JOIN C ON A.所属地区ID = C.地区ID;
JL99000 2007-12-13
  • 打赏
  • 举报
回复
select A.姓名,B.民族名称,C.地区名称 from A
left join B on A.所属民族ID=B.民族ID
left join C on A.所属地区ID=C.地区ID
cxmcxm 2007-12-12
  • 打赏
  • 举报
回复
用左连接
wxxloveu 2007-12-12
  • 打赏
  • 举报
回复
select A.姓名,B.民族名称,C.地区名称
FROM A LEFT JION B ON A.所属民族ID = B.民族ID LEFT JION C on A.所属地区ID =C.地区ID
yms_wangxm 2007-12-12
  • 打赏
  • 举报
回复
select a.姓名,b.民族名称,c.地区名称 from a left join b
on a.所属民族ID = b.民族ID left join c
on a.所属地区ID = c.地区ID
rings2000 2007-12-12
  • 打赏
  • 举报
回复
select
姓名,
(select 民族名称 from b where 民族id=a.所属民族id),
(select 地区 from c where 地区id=a.所属地区id),
from a
chuifengde 2007-12-12
  • 打赏
  • 举报
回复
select 
姓名,
(select 民族名称 from b where 民族id=a.所属民族id),
(select 民族名称 from c where 地区id=a.所属地区id),
from a
dawugui 2007-12-12
  • 打赏
  • 举报
回复
select a.姓名,b.民族名称,c.地区名称 from a left join b on a.所属民族ID = b.民族ID left join c on a.所属地区ID = c.地区ID

34,837

社区成员

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

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