表ItemList:(项目列表)
Kind  value   name
1      1      一般性病
1      2      慢性病
2      1      厂内医院
2      2      厂外医院
2      3      一级医院
2      4      二级医院
2      5      三级医院
3      1  .....
.......................
------------------------------------
表personalAccount: (员工帐号档案表)
ID      Accounts       Name  
1       1001            张三
2       1002            李四
3       1003            王五
.....................
-------------------------------------
表T_master:(主表)
ID     Accounts     AA           BB 
1       1001        1            1
2       1002        2            5
3       1003        1            3
..........................
----------------------------------------
现在的问题是,想通过SQL查询语句在主表中实现这样的查询结果:
ID     Name          A         B
1       张三     一般性病    厂内医院
2       李四      慢性病     三级医院
3       王五     一般性病    一级医院
......................

解决方案 »

  1.   

    SELECT a.[ID],b.[Name],
           (SELECT c.[name] FROM ItemList c WHERE c.[kind]=1 AND c.[value]=a.AA) 
           AS A,
           (SELECT d.[name] FROM ItemList d WHERE d.[kind]=2 AND d.[value]=a.BB) 
           AS B
    FROM T_master a,personalAccount b
    WHERE a.Accounts=b.Accounts AND a.
      

  2.   

    改过:SELECT a.[ID],b.[Name],
           (SELECT c.[name] FROM ItemList c WHERE c.[kind]=1 AND c.[value]=a.AA) 
           AS A,
           (SELECT d.[name] FROM ItemList d WHERE d.[kind]=2 AND d.[value]=a.BB) 
           AS B
    FROM T_master a,personalAccount b
    WHERE a.Accounts=b.Accounts
      

  3.   

    如果是SQL Serverselect a.ID, b.Name, (select name from ItemList c where c.kind=a.AA and c.value=a.BB) as A, (select d.name from ItemList d where d.kind=a.AA AND d.value=a.BB) AS B from T_master a, personalAccount b where a.ID=b.ID and a.Accounts=b.Accounts order by a.ID
      

  4.   

    select id,name,AA,BB from(
    (select b.id as id,name  from personalAccount a,T_master b where a.Accounts=b.Accounts) as C
    union
    (select b.id as aid,name as AA from ItemList a,T_master b where a.Kind=b.AA) as A
    union
    (select b.id as bid,name as BB from Itemlist a,T_master b where a.value=b.BB) as B
    ) where c.id=a.id and c.id=b.id
      

  5.   

    有興趣的話試一下吧。select t.id
          ,pa.name
          ,(select i.name from Itemlist where I.kind = 1) as A
          ,(select i.name from Itemlist where I.kind > 1) as B
      from T_master t
      join PersonalAccount pa
        on t.id = pa.id  join ItemList i
        on t.aa = i.value  join Itemlist i 
        on t.bb = i.kind