有一个表mj,
id  图号  数量  可借用图号   
-- -----  ----  ----  
1   A      2    NULL
2   B      1    NULL
3   C      1    B   
4   D      1    B   
5   E      2    C   
6   F      1    A   有上面的一个表mj,可借用图号列是指与图号列相同的东西,是实物相同但编号不一样的东西,如上表,C、D可以借用B,C也可以借用D;E可以借用C,同是可以使用B、D。
想通过查询得出某个图号可以所有能借用的图号和数量。
如查C,可以列出可借用的图号,B、D、E,以及各自的数量和总数量。
查询如下表:
可借用图号   数量
----------   ----
B            1
D            1          
E            2

解决方案 »

  1.   

    use Tempdb
    go
    --> --> 
     
    if not object_id(N'mj') is null
    drop table mj
    Go
    Create table mj([id] int,[图号] nvarchar(1),[数量] int,[可借用图号] nvarchar(1))
    Insert mj
    select 1,N'A',2,null union all
    select 2,N'B',1,null union all
    select 3,N'C',1,N'B' union all
    select 4,N'D',1,N'B' union all
    select 5,N'E',2,N'C' union all
    select 6,N'F',1,N'A'
    GoSELECT * 
    FROM mj AS a 
    WHERE EXISTS(SELECT 1 FROM mj WHERE [图号]='C' AND a.[可借用图号] IN([可借用图号],[图号]))/*
    id 图号 数量 可借用图号
    3 C 1 B
    4 D 1 B
    5 E 2 C
    */