create table ta(id int,name varchar(50),sex varchar(50))
insert into ta select 1,'aaa','m'
insert into ta select 2,'bbb','m'
insert into ta select 3,'ccc','f'
create table tb(id int,name varchar(50),[value] varchar(50))
insert into tb select 1,'address','guangzhou'
insert into tb select 1,'age','21'
insert into tb select 2,'address','dongguan'
insert into tb select 2,'age','22'
insert into tb select 3,'address','changsha'
insert into tb select 3,'age','24'select * from ta a join (
select id,
max(case when name='address' then [value] else '' end) as address,
max(case when name='age' then [value] else '' end) as age
from tb
group by id)b on a.id=b.idid name sex id address age
1 aaa m 1 guangzhou 21
2 bbb m 2 dongguan 22
3 ccc f 3 changsha 24

解决方案 »

  1.   

    create table ta(id int,name varchar(50),sex varchar(50))
    insert into ta select 1,'aaa','m'
    insert into ta select 2,'bbb','m'
    insert into ta select 3,'ccc','f'
    create table tb(id int,name varchar(50),[value] varchar(50))
    insert into tb select 1,'address','guangzhou'
    insert into tb select 1,'age','21'
    insert into tb select 2,'address','dongguan'
    insert into tb select 2,'age','22'
    insert into tb select 3,'address','changsha'
    insert into tb select 3,'age','24'select a.*,b.address,b.age from ta a join (
    select id,
    max(case when name='address' then [value] else '' end) as address,
    max(case when name='age' then [value] else '' end) as age
    from tb
    group by id)b on a.id=b.idid name sex address age
    1 aaa m guangzhou 21
    2 bbb m dongguan 22
    3 ccc f changsha 24
      

  2.   

    首先.....你这表谁设计的呀???????
    SELECT A.ID, A.NAME, A.SEX, B.ADDRESS, C.AGE
    FROM table_A AS A
    INNER JOIN table_B AS B
        ON A.ID = B.ID AND B.NAME = 'address'
    INNER JOIN table_B AS C
        ON A.ID = C.ID AND C.NAME = 'age'
    自己用数据试试吧......
      

  3.   

    对不起, 应该是:
    SELECT A.ID, A.NAME, A.SEX, B.VALUE AS ADDRESS, C.VALUE AS AGE
    FROM table_A AS A
    INNER JOIN table_B AS B
        ON A.ID = B.ID AND B.NAME = 'address'
    INNER JOIN table_B AS C
        ON A.ID = C.ID AND C.NAME = 'age'
      

  4.   

    declare @ta table (id int,name varchar(50),sex varchar(50))
    insert into @ta select 1,'aaa','m'
    insert into @ta select 2,'bbb','m'
    insert into @ta select 3,'ccc','f'declare  @tb table(id int,name varchar(50),[value] varchar(50))
    insert into @tb select 1,'address','guangzhou'
    insert into @tb select 1,'age','21'
    insert into @tb select 2,'address','dongguan'
    insert into @tb select 2,'age','22'
    insert into @tb select 3,'address','changsha'
    insert into @tb select 3,'age','24'
    select 
    a.*,
    max(case when b.name='address' then [value] else '' end) as address,
    max(case when b.name='age' then [value] else '' end) as age
    from 
    @ta a 
    join 
    @tb b on a.ID=b.ID
    group by a.id,a.name,a.sex
      

  5.   


    DECLARE @TB1 TABLE(ID INT ,NAME VARCHAR(10),SEX VARCHAR(2))
    INSERT INTO @TB1 SELECT 1  ,     'aaa'  ,   'm' 
    UNION ALL SELECT 2   ,    'bbb'  ,   'm' 
    UNION ALL SELECT 3   ,    'ccc'  ,   'f' DECLARE @TB2 TABLE(ID INT ,NAME VARCHAR(10),VALUE VARCHAR(20))
    INSERT INTO @TB2 SELECT 1  ,     'address'  ,   'guangzhou' 
    UNION ALL SELECT 1   ,    'age'  ,   '21' 
    UNION ALL SELECT 2   ,    'address'  ,   'dongguan' 
    UNION ALL SELECT 2   ,    'age'  ,   '22' 
    UNION ALL SELECT 3   ,    'address'  ,   'changsha' 
    UNION ALL SELECT 3   ,    'age'  ,   '23' SELECT A.* ,B.ADDRESS ,B.AGE FROM @TB1 A
    INNER JOIN(
      SELECT ID,
        MAX(CASE B.NAME WHEN 'ADDRESS' THEN B.VALUE ELSE ''END) AS ADDRESS ,
        MAX(CASE B.NAME WHEN 'AGE' THEN B.VALUE ELSE ''END) AS AGE
      FROM @TB2 B
      GROUP BY ID) B
    ON A.ID=B.ID/*
    ID          NAME       SEX  ADDRESS              AGE                  
    ----------- ---------- ---- -------------------- -------------------- 
    1           aaa        m    guangzhou            21
    2           bbb        m    dongguan             22
    3           ccc        f    changsha             23(所影响的行数为 3 行)*/