100急求解决一个sql查询语句的问题。。。

xttxqjfg 2013-05-17 10:00:32
现在有这样一个情况,有两张表,第一张表里面存的是部门编码和部门名称,第二张表示一个资产的详细情况,里面涉及到部门表里面的两个id,现在想建立一个视图,把第二张表了里面的id全部换成名称。具体如下:

部门表
0001 财务部
0002 行政部

资产表
资产编码 名称 所属部门 保管人 外借部门 接收人
1 电脑 0001 张三 0002 李四

想通过一个查询得到下面的结果
资产编码 名称 所属部门 保管人 外借部门 接收人
1 电脑 财务部 张三 行政部 李四
...全文
85 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xttxqjfg 2013-05-17
  • 打赏
  • 举报
回复
二、三楼正解。。给分结贴
發糞塗牆 2013-05-17
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-05-17 10:07:57
-- Version:
--      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 
--	Jun 17 2011 00:54:03 
--	Copyright (c) Microsoft Corporation
--	Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1, v.721)
--
----------------------------------------------------------------
--> 测试数据:[资产表]
if object_id('[资产表]') is not null drop table [资产表]
go 
create table [资产表]([资产编码] int,[名称] varchar(4),[所属部门] varchar(4),[保管人] varchar(4),[外借部门] varchar(4),[接收人] varchar(4))
insert [资产表]
select 1,'电脑','0001','张三','0002','李四'

--> 测试数据:[部门表]
if object_id('[部门表]') is not null drop table [部门表]
go 
create table [部门表]([部门编号] varchar(4),[部门名称] varchar(6))
insert [部门表]
select '0001','财务部' union all
select '0002','行政部'
--------------开始查询--------------------------

select a.[资产编码],a.名称,b.部门名称,a.保管人,c.部门名称,a.接收人 
from [资产表] a LEFT JOIN [部门表] b ON a.所属部门=b.部门编号
LEFT JOIN [部门表] c ON a.所属部门=c.部门编号

----------------结果----------------------------
/* 
资产编码        名称   部门名称   保管人  部门名称   接收人
----------- ---- ------ ---- ------ ----
1           电脑   财务部    张三   财务部    李四
*/
哥眼神纯洁不 2013-05-17
  • 打赏
  • 举报
回复

with 部门表(a,b)as(
select '0001','财务部' union all
select '0002','行政部'
)
,资产表(资产编号,名称,所属部门,保管人,外借部门,接收人)as(
select 1,'电脑','0001','张三','0002','李四'
)
select 资产编号,名称,
所属部门=(select case when a is not null then b else null end 
from 部门表 where 部门表.a=a.所属部门),
保管人,
外借部门=(select case when a is not null then b else null end 
from 部门表 where 部门表.a=a.外借部门),接收人 
from 资产表 a

hyrongg 2013-05-17
  • 打赏
  • 举报
回复
你这个直接资产表 left join 部门表2次就可以了

34,590

社区成员

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

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