导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

求一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对应的名称
...全文
89 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告