当前位置: 首页 > 面试题库 >

SQL Server 2000中的行到列

何雅惠
2023-03-14
问题内容

我有这个..

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功能,因此您应该能够使用类似于以下内容的东西:

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



 类似资料:
  • 本文向大家介绍调整SQLServer2000运行中数据库结构,包括了调整SQLServer2000运行中数据库结构的使用技巧和注意事项,需要的朋友参考一下 开发过程中的数据库结构结构,不可避免的会需要反复的修改。最麻烦的情况莫过于开发者数据库结构已经修改,而实际应用中数据库又有大量数据,如何在不影响 数据库中数据情况下,更新数据结构呢?当然,我们可以手工对应用数据库表结构各个添加、更正、删除的字段

  • 问题内容: Table: 我的表有不同的数据类型,col2是nvarchar h我可以这样做吗? 结果: 问题答案: 您可以使用该操作获取结果

  • 问题内容: 我正在通过具有只读访问权限的pgAdmin 4使用Postgres 9.5,我正在尝试编写一个select查询,该查询将从这种形式转换数据: 填写此表格: 请注意,列过滤器,组和角色中的值可能会更改。 可以执行该操作的postgres选择脚本吗? 非常感激! 问题答案: 试试这个 演示版

  • 我想使用两列作为行ID,同时计算基于时间的分组。请看下图: 转化成这样: 正在发生的是,X在时间10发生了0次,但在15和23发生了1次。 Y在10点钟发生了3次,但在15和23没有。等等。

  • 问题内容: 我想转到.txt文件中的第34行并阅读它。您将如何在Python中做到这一点? 问题答案: 使用Python标准库的linecache模块: 应该正是您想要的。您甚至不需要打开文件-一切都为您完成!

  • 如何将行交换到列,我有一个输出,如 我需要一个输出比如