我有这个..
IDProspecto | IDObservacionCustomer | Observacion --------------------------------------------------------- 2204078 | 275214 | 03/9 Hable con Claudia me informa que Roberto ya se termino le deje.. 2204078 | 294567 | 19/09 SOLICITAN LLAME MAÑANA A ALEJANDRO 2204078 | 295310 | 20/09 se envia mail a adrian 2204078 | 304102 | CIA SOLICITA NO INSTALE EQUIPO
我想要这个…
idprospecto | observacion1 | observacion2 | observacion3 | observacion4 | observacionN ----------------------------------------------------------------------------------------- 2204078 | 03/09 Hable con clau... | 19/09 solicitan llame... | 20/09 se envia... | CIA solicita.. | ...
我读了很多有关此内容的文章,但是我发现它很难实现,因为我从未使用过SQL Server 2000中没有提供游标和数据透视的功能,希望这里有人可以帮助我,谢谢。
由于SQL Server 2000不具有此PIVOT功能,因此您应该能够使用类似于以下内容的东西:
PIVOT
DECLARE @query AS NVARCHAR(4000) DECLARE @rowCount as int DECLARE @pivotCount as int DECLARE @pivotRow as varchar(10) set @rowCount = 1 set @pivotRow = '' create table #colsPivot ( id int IDENTITY(1,1), name varchar(20), CustId int ) insert into #colsPivot select 'Observacion', IDObservacionCustomer from yourtable set @pivotCount= (select COUNT(*) from #colsPivot) -- reset rowcount set @rowCount = 1 set @query = '' ---- create the CASE string while @rowCount <= @pivotCount begin set @pivotRow = (select Top 1 CustId from #colsPivot) set @query = @query + ', max(case when IDObservacionCustomer = ''' + @pivotRow + ''' then Observacion end) as ''Observacion_' + cast(@rowCount as varchar(10)) + '''' delete from #colsPivot where CustId = @pivotRow if @rowCount <= @pivotCount begin set @rowCount = @rowCount + 1 end end -- add the rest of the SQL Statement set @query = 'SELECT IDProspecto ' + @query + ' from yourtable group by IDProspecto' exec(@query)
请参见带有演示的SQL Fiddle