日期:2014-05-17 浏览次数:20512 次
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
----------------------------
-- 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.部门编号
----------------结果----------------------------