透视/取消以下数据

问题描述 投票:2回答:1

我是Pivots的新手,所以我不确定我该怎么做才能做到这一点。

我有以下数据:

Budgets

我需要转动/取消上述数据。

我需要以下列:

  1. GLLink
  2. AccType
  3. 预算
  4. 预算价值

我试过开发​​代码,但我担心我做错了:

select
*
from
(
select
*
from    Budgets
)   x
unpivot
(
GLLink for Budget in ([AccType])
)   p
order by GLLink, Budget

我需要的结果应如下所示:

enter image description here


sql-server tsql
1个回答
4
投票

假设您向我们展示的数据位于名为“yourtable”的表中,这里是cross apply方式:

select t.GLLink,t.Acctype,u.*
from yourtable t
cross apply
(
    values 
    ('Budget01',Budget01),
    ('Budget02',Budget02),
    ('Budget03',Budget03),
    ('Budget04',Budget04),
    ('Budget05',Budget05),
    ('Budget06',Budget06),
    ('Budget07',Budget07)
)u(Budget,[Budget Value])

它的工作方式:cross apply每次“看到”一行。对于此行,它使用values()运算符创建表,因此我们根据您的需要创建对。最后,我们给这个表命名(u for unpivoted),并命名列。

将列转换为行是univoting(您需要的),旋转是相反的。

© www.soinside.com 2019 - 2024. All rights reserved.