【发布时间】:2017-03-06 13:01:33
【问题描述】:
感谢大家提供的所有帮助,虽然这让我大开眼界,但不幸的是它并没有产生我想要的预期结果。为了更好地获得我正在寻找的帮助,我将尝试解释我想要实现的目标。
我认为主要关注的列是“IN”、“AA_Now”、“STF_Now”、“dbo.Sheet1$.LOB_name”、“dbo.Sheet1$.LifeCycleName”和“dbo.Sheet1$.AreaOfBusiness”。每个“IN”都有一个“AA_Now”和“STF_Now”。一组“IN”在“dbo.Sheet1$.LOB_name”下汇总。在“dbo.Sheet1$.LOB_name”下,我只想要汇总的“IN”组的最大值。现在“dbo.Sheet1$.LOB_name”在“dbo.Sheet1$.LifeCycleName”下汇总,我想要的是在“dbo.Sheet1$.LOB_name”下汇总的最大值的总和,以显示在“dbo.Sheet1$.LifeCycleName”的汇总。最后,“dbo.Sheet1$.LifeCycleName”汇总为“dbo.Sheet1$.AreaOfBusiness”。和以前一样,我正在寻找的是要显示的“dbo.Sheet1$.LifeCycleName”的总和。这些仅适用于“AA_Now”和“STF_Now”列 我尝试从数据透视表中执行此操作,但无济于事,并认为最好在原始数据中对其进行排序。
我正在尝试在 SQL Server 中进行 SUM(MAX) 计算,并在执行命令时出现以下错误
消息 130,级别 15,状态 1,第 6 行 无法对包含聚合或子查询的表达式执行聚合函数。
我确定错误是由两者引起的
,SUM(MAX(convert(float,replace([AA_Now], 'N/A','0')))) As [AA2_Now]
和
,SUM(MAX(convert(float,replace([STF_Now], 'N/A','0')))) As [STF2_Now]
但不知道如何在不导致错误的情况下重写它。
以下是完整代码。
SELECT dbo.CCA_Merged.id, dbo.CCA_Merged.timeStamp, dbo.CCA_Merged.name, dbo.CCA_Merged.lN
,dbo.CCA_Merged.type, dbo.CCA_Merged.id2, dbo.CCA_Merged.aG
,dbo.CCA_Merged.regionId, dbo.CCA_Merged.sgcc
,convert(float,replace([SLC_Today],'N/A','0')) As [SLC_Today]
,convert(float,replace([AA_Now],'N/A','0')) As [AA_Now]
,SUM(MAX(convert(float,replace([AA_Now],'N/A','0')))) As [AA2_Now]
,convert(float,replace([SLCO_Today],'N/A','0')) As [SLCO_Today]
,convert(float,replace([CABN_Today],'N/A','0')) As [CABN_Today]
,convert(float,replace([COF_Today],'N/A','0')) As [COF_Today]
,convert(float,replace([HT_Today],'N/A','0')) As [HT_Today]
,convert(float,replace(replace([CH_Today],'N/A','0'),'-','0')) As [CH_Today]
,convert(float,replace([SLC_Now],'N/A','0')) As [SLC_Now]
,convert(float,replace([SLCO_Now],'N/A','0')) As [SLCO_Now]
,convert(float,replace([SLC_Thirty],'N/A','0')) As [SLC_Thirty]
,convert(float,replace(replace([SLCO_Thirty],'N/A','0'),'-','0')) As [SLCO_Thirty]
,convert(float,replace([ACWT_Today],'N/A','0')) As [ACWT_Today]
,convert(float,replace([CQ_Now],'N/A','0')) As [CQ_Now]
,convert(float,replace([LCQ_Now],'N/A','0')) As [LCQ_Now]
,convert(float,replace([SLCH_Now],'N/A','0')) As [SLCH_Now]
,convert(float,replace([STF_Now],'N/A','0')) As [STF_Now]
,SUM(MAX(convert(float,replace([STF_Now],'N/A','0')))) As [STF2_Now]
,dbo.Sheet1$.AreaOfBusiness, dbo.Sheet1$.LifeCycleName, dbo.Sheet1$.LOB_name
FROM dbo.Sheet1$ RIGHT OUTER JOIN
dbo.CCA_Merged ON dbo.Sheet1$.Skill_Name = dbo.CCA_Merged.lN
Group by ROLLUP (stf_now) ,dbo.CCA_Merged.id, dbo.CCA_Merged.timeStamp, dbo.CCA_Merged.name, dbo.CCA_Merged.lN
,dbo.CCA_Merged.type, dbo.CCA_Merged.id2, dbo.CCA_Merged.aG ,dbo.CCA_Merged.regionId
,dbo.CCA_Merged.sgcc,AA_Now,SLC_Today,SLCO_Today,CABN_Today,COF_Today,HT_Today,CH_Today
,SLC_Now,SLCO_Now,SLC_Thirty,SLCO_Thirty,ACWT_Today,CQ_Now,LCQ_Now,SLCH_Now
,dbo.Sheet1$.AreaOfBusiness, dbo.Sheet1$.LifeCycleName, dbo.Sheet1$.LOB_name
我对 SQL Server 比较陌生,如果有任何帮助,我将不胜感激。
提前致谢
更新了精简脚本
SELECT dbo.CCA_Merged.lN
,convert(float,replace([STF_Now],'N/A','0')) As [STF_Now]
,dbo.Sheet1$.LOB_name, dbo.Sheet1$.LifeCycleName, dbo.Sheet1$.AreaOfBusiness
FROM dbo.Sheet1$ RIGHT OUTER JOIN
dbo.CCA_Merged ON dbo.Sheet1$.Skill_Name = dbo.CCA_Merged.lN
Group by stf_now ,AA_Now,dbo.CCA_Merged.lN,dbo.Sheet1$.AreaOfBusiness, dbo.Sheet1$.LifeCycleName, dbo.Sheet1$.LOB_name
Order by AreaOfBusiness DESC
+----+---------+----------+----------------+------- ---------+
| LN | STF_现在 | LOB_name |生命周期名称 |业务领域 |
+----+---------+----------+----------------+------- ---------+
|一个 | 46 | BSW |学士学位 |商业 |
|乙| 46 | BSW |学士学位 |商业 |
| C | 0 |老板 |学士学位 |商业 |
| D | 112 |默沙东 |学士学位 |商业 |
| E | 112 |默沙东 |学士学位 |商业 |
| F | 42 |超高压 | BR |商业 |
|克| 23 | BCR | BR |商业 |
| H | 23 |超高压 | BR |商业 |
|我 | 55 | BSW2 |学士学位 |商业 |
| Ĵ | 1 | BSW2 |学士学位 |商业 |
| ķ | 46 | BSW |学士学位 |商业 |
|大号 | 112 |默沙东 |学士学位 |商业 |
|中号 | 112 |默沙东 |学士学位 |商业 |
| N | 57 | BSW |学士学位 |商业 |
| ○ | 0 |老板 |学士学位 |商业 |
|磷 | 38 |默沙东 |学士学位 |商业 |
|问 | 38 |默沙东 |学士学位 |商业 |
|右 | 19 |超高压 | BR |商业 |
|小号 | 0 | BCR | BR |商业 |
| T | 19 |超高压 | BR |商业 |
|你 | 2 | BSW |学士学位 |商业 |
|五 | 1 | BSW |学士学位 |商业 |
| W | 57 | BSW |学士学位 |商业 |
| X | 38 |默沙东 |学士学位 |商业 |
|是 | 38 |默沙东 |学士学位 |商业 |
+----+---------+----------+----------------+------- ---------+
以下是添加的 3 列中的预期结果
LOB_Name2(这是由 LN 产生的 STF_Now 的最大值)
57 BSW 0 老板 112 默沙东 42 BHV 23 BCR 55 BSW2LifeCycleName2(这是 LOB_Name2 的 Rollup 的最大值之和)
224 学士学位 65 卧室AreaOfBusiness2(这是 LifeCycleName2 的汇总总和)
289 商业【问题讨论】:
-
您确实应该添加示例数据以及您想要的结果。真的不可能弄清楚你需要什么。
-
嗨 JamesZ 我已经添加了一些示例数据。谢谢
标签: sql-server sql-server-2014