SQL Server 2008:没有聚合函数的Pivot列解决方法

时间:2011-05-13 15:42:59

标签: tsql sql-server-2008 pivot

是的我知道,这个问题已被问过很多次,但在阅读完所有帖子后,我发现没有一个符合我需要的答案。那么,继承人我的问题。我想取一列值并将它们转换成6列的行。

I want to take this......    And turn it into this.......................
G                            Letter  Date    Code  Ammount   Name       Account 
081278                       G       081278   12   00123535  John Doe   123456
12
00123535
John Doe
123456

我在一个名为TempTable的表中的一列中有110000个值。我需要显示所有值,因为每行都是自身的实体。例如,所有Letter,Date,Code,Ammount,Name和Account列都有一个唯一条目。我知道聚合函数是必需的,但是有一种解决方法可以让我得到这个想要的结果吗?

2 个答案:

答案 0 :(得分:1)

只需使用MAX汇总

如果一行=一列(每组6行),则单个值的MAX =该行值。

但是,您发布的数据不足。我没有看到任何东西:

  • 每组关联6行
  • 区分行是“Letter”还是“Name”

没有隐含的行顺序或数字可依赖于生成组

答案 1 :(得分:0)

不幸的是,根据MSDN Max Capacity,SQL 2008 select语句中的最大列数为4,096。

您可以考虑使用动态SQL来获取您想要执行的操作,而不是使用数据透视表。

Declare @SQLColumns nvarchar(max),@SQL nvarchar(max)
select @SQLColumns=(select '''+ColName+'''',' from TableName for XML Path(''))
set @SQLColumns=left(@SQLColumns,len(@SQLColumns)-1)

set @SQL='Select '+@SQLColumns
exec sp_ExecuteSQL @SQL,N''