您将需要使用PIVOT并执行以下操作:
静态数据透视-仅需透视几列
select *from ( SELECt v.id , vi.id AS ins_id , vi.expiry_date FROM vendor v INNER JOIN vendor_insurances vi ON v.id=vi.vendorId) xPIVOT( MIN(expiry_date) FOR ins_id IN ([1], [11])) p
或者,如果您有很多要发送到PIVOT的项目,则可以使用“动态数据透视表”:
DECLARE @cols AS NVARCHAr(MAX), @query AS NVARCHAr(MAX);select @cols = STUFF((SELECT distinct ',' + QUOTENAME(vi.id) FROM vendor v INNER JOIN vendor_insurances vi ON v.id=vi.vendorId FOR XML PATH(''), TYPE ).value('.', 'NVARCHAr(MAX)') ,1,1,'')set @query = 'SELECt id, ' + @cols + ' from ( SELECt v.id , vi.id AS ins_id , vi.expiry_date FROM vendor v INNER JOIN vendor_insurances vi ON v.id=vi.vendorId ) x pivot ( MIN(expiry_date) for ins_id in (' + @cols + ') ) p 'execute(@query)两者都会给您相同的结果。



