Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLServer-使用组数据透视表_Sql_Sql Server_Tsql - Fatal编程技术网

SQLServer-使用组数据透视表

SQLServer-使用组数据透视表,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想知道我想做的事是否可行。我相信它在TSQL中使用了PIVOT函数,但是没有足够的PIVOT函数经验来知道从哪里开始 基本上,我尝试使用以下名为35; tmpbudgetdata的表(为了简单起见被截断): 把它变成这样: Account Description Period1 Period2 Period3 Period4 Period5 Period6 Period7 Period8 Period9 Period10 Period11 Period12 ------- -----

我想知道我想做的事是否可行。我相信它在TSQL中使用了PIVOT函数,但是没有足够的PIVOT函数经验来知道从哪里开始

基本上,我尝试使用以下名为35; tmpbudgetdata的表(为了简单起见被截断):

把它变成这样:

Account Description      Period1 Period2 Period3 Period4 Period5 Period6 Period7 Period8 Period9 Period10 Period11 Period12
------- --------------- -------- ------- -------- ------ ------- ------- -------- ------ ------- -------- -------- --------
4001   Mood Enabled...  0.00     0.00    0.00    0.00    0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00
4003   Dbs Music        0.00     0.00    0.00    0.00    0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00 
4010   Sales - Software 5040.00  0.00    6280.56 6947.93 4800.00  0.00   2400.00 2550.00  4800.00 2400.00 0.00    2400.00
...etc...
基本上只是通过Account列进行分组(每个Account的描述相同),然后取期间值并水平旋转它们

我知道我可以用光标和循环来完成,但我想知道这是否可以通过枢轴或其他方式实现


提前谢谢

我想简单的PIVOT应该能做到这一点

示例

Select *
 From  (
        Select [Account] 
              ,[Description]
              ,Period = concat('Period',Period)
              ,[BudgetAmount]
          From YourTable
       ) src 
 Pivot (sum([BudgetAmount]) for Period in ( [Period1],[Period2],[Period3],[Period4],[Period5],[Period6],[Period7],[Period8],[Period9],[Period10],[Period11],[Period12] ) ) pvt
返回


您以前尝试过什么,请分享一下?谢谢您,John。这正是我想要的。我想我把事情复杂化了,假设我需要按帐户分组somewhere@jprice92很乐意帮忙。我们都需要时不时地轻轻推一下
Select *
 From  (
        Select [Account] 
              ,[Description]
              ,Period = concat('Period',Period)
              ,[BudgetAmount]
          From YourTable
       ) src 
 Pivot (sum([BudgetAmount]) for Period in ( [Period1],[Period2],[Period3],[Period4],[Period5],[Period6],[Period7],[Period8],[Period9],[Period10],[Period11],[Period12] ) ) pvt