且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SQL查询将行转置为列

更新时间:2023-11-18 21:29:40

下面应该提供一些透视数据的想法.它并没有像您所要求的那样为您提供完全正确的错误.

Following should give some idea on pivoting the data. It doesn't give you exact true false as you asked.

    declare  @facility table (facilityId int)
    declare  @PartnerInfo  table (partnerid int, partnerN varchar(1000))
    declare  @FacilityPartner table (facilityId int,partnerid int)

    insert into @facility values (12345)
    insert into @facility values (67890)
    insert into @facility values (67891)

    insert into @PartnerInfo values (1, 'partner1')
    insert into @PartnerInfo values (2, 'partner2')
    insert into @PartnerInfo values (3, 'partner3')

    insert into @FacilityPartner values(12345, 1)
    insert into @FacilityPartner values(12345, 3)
    insert into @FacilityPartner values(67890, 2)
    insert into @FacilityPartner values(67890, 3)

    select f.facilityId as facid, p.PartnerN as partn, 100 as val
    FROM @facility f
    LEFT join @FacilityPartner fp on f.facilityId = fp.facilityId
    LEFT JOIN @PartnerInfo p on p.partnerid = fp.partnerid

    select facid, Partner1 , partner2,partner3 FROM 

    (select f.facilityId as facid, p.PartnerN as partn, 100 as val
    FROM @facility f
    LEFT join @FacilityPartner fp on f.facilityId = fp.facilityId
    LEFT JOIN @PartnerInfo p on p.partnerid = fp.partnerid) x
    PIVOT(
    avg(val)
    for partn in ([partner1], [partner2],[partner3])
    ) as pvt