我想基于聚合结果创建一个新列。例如,该输入数据(从here借入),如下:将聚合添加为SQL Server中的新列
Company Date Flag
------- ------- -----
001 201201 Y
001 201201 N
001 201202 N
001 201202 N
001 201202 Y
我想有输出是
Company Date Flag Percentage
------- ------- ----- ----------
001 201201 Y 0.5
001 201201 N 0.5
001 201202 N 0.66
001 201202 Y 0.66
001 201202 Y 0.66
即,我需要加入聚合(Y的百分比标志列)返回到基于Company
和Date
的原始表格。
请注意,这只是一个玩具数据。在我的真实工作中,我必须加入大量表格才能获得所需的表格并找到一些聚合。我所做的是这样的:
SELECT *
FROM (
/* Lots of joins go here to obtain Table A */
) AS A
JOIN (
SELECT Percentage
FROM (
/* Percentage aggregation from Table A */
) AS P
) AS B
ON A.xxx = B.xx
的问题是,我将不得不重新生成表A计算聚集Percentage
时。是否有可能将聚合连接回所需的表格而无需两次重新生成所需的表格?谢谢。
你可以做一个选择T *从(整个此处查询)吨,比你有机会获得在t所有字段,而不得不重新生成任何东西 – GuidoG
是否有任何特定的原因,为什么不创建一个基于您的表的视图? – Tyron78
很确定你用[窗口函数](https://msdn.microsoft.com/en-us/library/ms189461.aspx)来完成你的工作,例如'百分比= 1.0/COUNT(*)OVER(分区公司,日期)' – GarethD