2014-09-19 121 views
0

我需要将表格从标准表格转换为更加概括的版本。行应基于2013年或2014年。我正在考虑使用一个关键点,但我不相信它的必要性。下面的代码失败,因为我刚刚创建的列的功能组是有办法解决这个问题吗?不使用透视功能的SQL数据透视表

CODE

CREATE VIEW -- select * from 
    [03_rdm].[AR_LedgerByInvoice] 
as 
select [EY_Business_Unit] 
     ,(Case when [AR_Fiscal Year] = 2014 then 'AR_Outstanding_Amount (CY)' else 'AR_Outstanding_Amount (PY)' end) [Aging_Bucket] 
     , [AR_1-30 Days Past Due] 
     , [AR_31-60 Days Past Due] 
     , [AR_61-90 Days Past Due] 
FROM [02_cdm].[0040_AR_InvoiceSummary_2013_2014] 
GROUP BY [Aging_Bucket] 

最终的结果应该是:

所需的输出

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 
+0

很不清楚。您似乎想要分组,但您并未汇总任何内容 - 您需要分组的内容是什么?请考虑发布您希望创建视图的表格示例以及基于该示例*的所需输出*。 – 2014-09-19 15:45:06

回答

3

不能按同一 '级别' 创建一个别名,但你应该能够以相同的表情分组,但也许你只是想按年分组? (如果是的话,也许GROUP BY [AR_Fiscal Year]是你真正想要的):

CREATE VIEW -- select * from 
    [03_rdm].[AR_LedgerByInvoice] 
as 
select [EY_Business_Unit] 
     ,(Case when [AR_Fiscal Year] = 2014 then 'AR_Outstanding_Amount (CY)' else 'AR_Outstanding_Amount (PY)' end) [Aging_Bucket] 
     , [AR_1-30 Days Past Due] 
     , [AR_31-60 Days Past Due] 
     , [AR_61-90 Days Past Due] 
FROM [02_cdm].[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 

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

或者,也许你想要聚合行:

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]; 
+0

不幸的是,我得到的错误是,业务单位不是不包含在聚合函数或GROUP BY子句中 – Calgar99 2014-09-19 15:29:48

+0

哦,对,在案例表达式之前添加它。 – jpw 2014-09-19 15:30:26

+0

它是一个永无止境的循环添加所有的列,否定组功能 – Calgar99 2014-09-19 15:31:47