需要通过SQL转换列

需要通过SQL转换列,sql,sql-server,pivot,Sql,Sql Server,Pivot,我整个上午都在谷歌上搜索,试图找出如何通过SQL转换我的数据,但我就是不明白。我有一个数据表,我需要转换列 我的原始表格如下所示: 列名在第一行 我想转置这些列,因此我的结果如下: 有人能帮我用正确的代码来获得我需要的结果吗?我不能仅仅通过Excel进行转换,因为数据是动态的 编辑: 我尝试了以下代码: SELECT [Gift Level], Goal FROM ( SELECT * FROM GiftPyramidDollars) AS Result Unpivot (Goal for

我整个上午都在谷歌上搜索,试图找出如何通过SQL转换我的数据,但我就是不明白。我有一个数据表,我需要转换列

我的原始表格如下所示:

列名在第一行

我想转置这些列,因此我的结果如下:

有人能帮我用正确的代码来获得我需要的结果吗?我不能仅仅通过Excel进行转换,因为数据是动态的

编辑: 我尝试了以下代码:

SELECT [Gift Level], Goal
FROM
(   SELECT * FROM GiftPyramidDollars)
AS Result
Unpivot
(Goal for [Gift Level] in ([< $25,000], [$25,000], [$50,000], [$100,000], [$200,000], [$250,000], [$500,000], [$1,000,000], [$2,500,000], [$5,000,000], [$10,000,000])
)
AS UnPvt
但它没有将结果分成两列。这就是我得到的:

Gift Level      Goal
< $25,000   0.00
$25,000         0.00
$50,000         0.00
$100,000    8000000.00
$200,000    10000000.00
$250,000    6250000.00
$500,000    12500000.00
$1,000,000  30000000.00
$2,500,000  12500000.00
$5,000,000  10000000.00
$10,000,000 10000000.00
< $25,000   58126.67
$25,000         260687.75
$50,000         394300.00
$100,000    352233.61
$200,000    800000.00
$250,000    2110000.00
$500,000    4603423.93
$1,000,000  11500000.00
$2,500,000  0.00
$5,000,000  5000000.00
$10,000,000 0.00

你想取消PIVOT。你能更具体一点吗?今天早上我也读到了关于UNPIVOT的文章,并尝试了一下,但是没有弄清楚代码。我已经发布了一个。它有一些简单的例子,可能符合您的情况。语法可能特定于oracle SQL。请注意,其他海报是正确的:您打算进行取消PIVOT。请您将SQL数据表的列名添加到问题中,好吗?列名位于数据的顶行。或者,它们是“25000美元”、“25000美元”、“50000美元”、“100000美元”、“200000美元”、“250000美元”、“500000美元”、“1000000美元”、“2500000美元”、“5000000美元”和“10000000美元”。
SELECT B.[Gift Level]
     , [$ Goal] = MAX(CASE B.Campaign WHEN '$ Goal' THEN B.Goal END)
     , [$ Raised to Date] = MAX(CASE B.Campaign WHEN '$ Raised to Date' THEN B.Goal END)
FROM GiftPyramidDollars A
UNPIVOT(A.Goal FOR [Gift Level] IN (
    [< $25,000]
  , [$25,000]
  , [$50,000]
  , [$100,000]
  , [$200,000]
  , [$250,000]
  , [$500,000]
  , [$1,000,000]
  , [$2,500,000]
  , [$5,000,000]
  , [$10,000,000])
) B
GROUP BY B.[Gift Level]