Sql server 不使用透视函数的SQL透视表

Sql server 不使用透视函数的SQL透视表,sql-server,Sql Server,我需要将一个表从标准表转换为一个更概括的版本。行应基于2013年还是2014年。我正在考虑使用枢轴,但我认为没有必要。下面的代码失败了,因为我刚刚创建了一个列的group by函数。有没有办法解决这个问题 代码 最终结果应该是: 期望输出 Business Unit Aged Bucket [AR_1-30 Days] [AR_31-60 Days] [AR_61-90 Days] Total 100 ` AR_Outstanding_A

我需要将一个表从标准表转换为一个更概括的版本。行应基于2013年还是2014年。我正在考虑使用枢轴,但我认为没有必要。下面的代码失败了,因为我刚刚创建了一个列的group by函数。有没有办法解决这个问题

代码

最终结果应该是:

期望输出

Business Unit   Aged Bucket                [AR_1-30 Days]   [AR_31-60 Days] [AR_61-90 Days] Total
100 `           AR_Outstanding_Amount (CY)  x                xx             xxx             xxxx
100             AR_Outstanding_Amount (PY)  x                xx             xxx             xxxx

您不能使用在同一“级别”上创建的别名进行分组,但您应该能够使用同一表达式进行分组,但您可能只想按年份分组?(如果是这样的话,
GROUP BY[AR_财政年度]
可能是您真正想要的):

由于您没有提供任何样本数据或表,我无法测试它,但它应该可以工作

或者,您可能希望聚合行:

select [EY_Business_Unit]
        ,(Case when [AR_Fiscal Year] = 2014 then 'AR_Outstanding_Amount (CY)' else 'AR_Outstanding_Amount (PY)' end) [Aging_Bucket]
        , SUM([AR_1-30 Days Past Due])
        , SUM([AR_31-60 Days Past Due])
        , SUM([AR_61-90 Days Past Due])
FROM [0040_AR_InvoiceSummary_2013_2014]
GROUP BY 
[EY_Business_Unit]
        ,(Case when [AR_Fiscal Year] = 2014 then 'AR_Outstanding_Amount (CY)' else 'AR_Outstanding_Amount (PY)' end)
order by [EY_Business_Unit];

您不能使用在同一“级别”上创建的别名进行分组,但您应该能够使用同一表达式进行分组,但您可能只想按年份分组?(如果是这样的话,
GROUP BY[AR_财政年度]
可能是您真正想要的):

由于您没有提供任何样本数据或表,我无法测试它,但它应该可以工作

或者,您可能希望聚合行:

select [EY_Business_Unit]
        ,(Case when [AR_Fiscal Year] = 2014 then 'AR_Outstanding_Amount (CY)' else 'AR_Outstanding_Amount (PY)' end) [Aging_Bucket]
        , SUM([AR_1-30 Days Past Due])
        , SUM([AR_31-60 Days Past Due])
        , SUM([AR_61-90 Days Past Due])
FROM [0040_AR_InvoiceSummary_2013_2014]
GROUP BY 
[EY_Business_Unit]
        ,(Case when [AR_Fiscal Year] = 2014 then 'AR_Outstanding_Amount (CY)' else 'AR_Outstanding_Amount (PY)' end)
order by [EY_Business_Unit];

您不能使用在同一“级别”上创建的别名进行分组,但您应该能够使用同一表达式进行分组,但您可能只想按年份分组?(如果是这样的话,
GROUP BY[AR_财政年度]
可能是您真正想要的):

由于您没有提供任何样本数据或表,我无法测试它,但它应该可以工作

或者,您可能希望聚合行:

select [EY_Business_Unit]
        ,(Case when [AR_Fiscal Year] = 2014 then 'AR_Outstanding_Amount (CY)' else 'AR_Outstanding_Amount (PY)' end) [Aging_Bucket]
        , SUM([AR_1-30 Days Past Due])
        , SUM([AR_31-60 Days Past Due])
        , SUM([AR_61-90 Days Past Due])
FROM [0040_AR_InvoiceSummary_2013_2014]
GROUP BY 
[EY_Business_Unit]
        ,(Case when [AR_Fiscal Year] = 2014 then 'AR_Outstanding_Amount (CY)' else 'AR_Outstanding_Amount (PY)' end)
order by [EY_Business_Unit];

您不能使用在同一“级别”上创建的别名进行分组,但您应该能够使用同一表达式进行分组,但您可能只想按年份分组?(如果是这样的话,
GROUP BY[AR_财政年度]
可能是您真正想要的):

由于您没有提供任何样本数据或表,我无法测试它,但它应该可以工作

或者,您可能希望聚合行:

select [EY_Business_Unit]
        ,(Case when [AR_Fiscal Year] = 2014 then 'AR_Outstanding_Amount (CY)' else 'AR_Outstanding_Amount (PY)' end) [Aging_Bucket]
        , SUM([AR_1-30 Days Past Due])
        , SUM([AR_31-60 Days Past Due])
        , SUM([AR_61-90 Days Past Due])
FROM [0040_AR_InvoiceSummary_2013_2014]
GROUP BY 
[EY_Business_Unit]
        ,(Case when [AR_Fiscal Year] = 2014 then 'AR_Outstanding_Amount (CY)' else 'AR_Outstanding_Amount (PY)' end)
order by [EY_Business_Unit];


不幸的是,我得到一个错误,即业务单元不包含在聚合函数或GROUP BY子句中。这是一个永无止境的循环,以添加所有列来否定GROUP BY函数。你需要分组吗?您不使用任何聚合函数,所以不只是按顺序执行吗?尝试将组全部排除在外。不幸的是,它需要压缩为两行“应收未付金额(CY)”和“应收未付金额(PY)”OMG!!!!我觉得自己像个傻瓜。我不敢相信我忘了算数。。。。。。。。。。感谢您的耐心。不幸的是,我得到一个错误,即业务单元不包含在聚合函数或GROUP BY子句中。添加所有列以否定GROUP BY函数是一个永无止境的循环。嗯,是的。你需要分组吗?您不使用任何聚合函数,所以不只是按顺序执行吗?尝试将组全部排除在外。不幸的是,它需要压缩为两行“应收未付金额(CY)”和“应收未付金额(PY)”OMG!!!!我觉得自己像个傻瓜。我不敢相信我忘了算数。。。。。。。。。。感谢您的耐心。不幸的是,我得到一个错误,即业务单元不包含在聚合函数或GROUP BY子句中。添加所有列以否定GROUP BY函数是一个永无止境的循环。嗯,是的。你需要分组吗?您不使用任何聚合函数,所以不只是按顺序执行吗?尝试将组全部排除在外。不幸的是,它需要压缩为两行“应收未付金额(CY)”和“应收未付金额(PY)”OMG!!!!我觉得自己像个傻瓜。我不敢相信我忘了算数。。。。。。。。。。感谢您的耐心。不幸的是,我得到一个错误,即业务单元不包含在聚合函数或GROUP BY子句中。添加所有列以否定GROUP BY函数是一个永无止境的循环。嗯,是的。你需要分组吗?您不使用任何聚合函数,所以不只是按顺序执行吗?尝试将组全部排除在外。不幸的是,它需要压缩为两行“应收未付金额(CY)”和“应收未付金额(PY)”OMG!!!!我觉得自己像个傻瓜。我不敢相信我忘了算数。。。。。。。。。。非常感谢你的耐心。你似乎想要分组,但你没有聚合任何东西——那么你需要分组做什么呢?请考虑基于该示例来张贴要创建视图的表和期望的输出。非常不清楚。你似乎想要分组,但你没有聚合任何东西——那么你需要分组做什么呢?请考虑基于该示例来张贴要创建视图的表和期望的输出。非常不清楚。你似乎想要分组,但你没有聚合任何东西——那么你需要分组做什么呢?请考虑基于该示例来张贴要创建视图的表和期望的输出。非常不清楚。你似乎想要分组,但你没有聚合任何东西——那么你需要分组做什么呢?请考虑基于该示例张贴要创建视图的表和期望输出的示例。