我有以下查询生成我的数据透视结果:
SELECT * FROM
(
SELECT
#tmp1.Name,
DATEDIFF(D,#tmp1.AuthDate,#tmp1.AuthExpirationDate) AS AuthLenInDays,
#tmp1.NbrOfAuthorizations,
#tmp1.MODE
FROM #tmp1
LEFT JOIN #tmp2
ON #tmp2.AuthID = #tmp1.AuthID
GROUP BY #tmp1.Name, #tmp1.NbrOfAuthorizations, #tmp1.AuthDate, #tmp1.AuthExpirationDate, #tmp1.MODE
) AS InnerTbl
PIVOT
(AVG(AuthLenInDays) FOR [MODE] IN ([Preservation])
) PivotResults1
结果如下:
Name NbrOfAuthorizations Preservation
Centro 1 79
Dennis 1 92
Therapy Center 1 68
Florez 1 92
我有两个我无法弄清楚的问题,我已经尝试了我能想到的一切,甚至还有来自stackoverflow的其他建议。
- 我不知道如何更改结果中最右侧列的名称(保留)。这是一个平均数字,所以我想将该列标记为“平均”。
- 此外,需要对表中的所有值求和 NbrOfAuthorizations。我尝试过使用枢轴,这让我很接近但不是一直到那里,我也尝试在 InnerTbl 查询中使用 SUM 但也不是这样。
如果我把我的原始数据导出到 excel 并在那里做一个透视,我可以看到数字和我应该得到什么。我正在尝试采用该过程并纯粹在 SQL 中完成。根据表中的数据,SUM 的值应为
Name NbrOfAuthorizations Preservation
Centro 5 79
Dennis 1 92
Therapy Center 57 68
Florez 1 92
有没有高手大神?