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

发布于 2024-11-06 21:38:59 字数 501 浏览 0 评论 0 原文

是的,我知道,这个问题已被问过很多次,但在阅读所有帖子后,我发现没有适合我需要的答案。所以,这是我的问题。我想获取一列值并将它们转换为 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 个值。我需要显示所有值,因为每一行本身就是一个实体。例如,所有字母、日期、代码、金额、名称和帐户列都有一个唯一的条目。我知道聚合函数是必需的,但是是否有解决方法可以让我获得所需的结果?

Yes I know, this question has been asked MANY times but after reading all the posts I found that there wasn't an answer that fits my need. So, Heres my question. I would like to take a column of values and pivot them into rows of 6 columns.

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

I have 110000 values in this one column in one table called TempTable. I need all the values displayed because each row is an entity to itself. For instance, There is one unique entry for all of the Letter, Date, Code, Ammount, Name, and Account columns. I understand that the aggregate function is required but is there a workaround that will allow me to get this desired result?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

π浅易 2024-11-13 21:38:59

只需使用 MAX 聚合

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

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

  • 关联每组 6 行区
  • 分行是“字母”还是“名称”

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

Just use a MAX aggregate

If one row = one column (per group of 6 rows) then MAX of a single value = that row value.

However, the data you've posted in insufficient. I don't see anything to:

  • associate the 6 rows per group
  • distinguish whether a row is "Letter" or "Name"

There is no implicit row order or number to rely upon to generate the groups

半步萧音过轻尘 2024-11-13 21:38:59

不幸的是,根据 MSDN 最大容量

您可以考虑使用动态 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''

Unfortunately, the max columns in a SQL 2008 select statement is 4,096 as per MSDN Max Capacity.

Instead of using a pivot, you might consider dynamic SQL to get what you want to do.

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''
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文