Я хотел бы создать новый столбец на основе результата агрегирования. Например, входные данные (заимствовано из 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
Проблема заключается в том, что я должен буду снова генерировать таблицу А при расчете агрегации Percentage
. Можно ли присоединиться к агрегации обратно в нужную таблицу без повторной регенерации нужной таблицы? Благодарю.
вы могли бы сделать отборный т. * Из (ваш весь запрос здесь) т и чем у вас есть доступ ко всем полям с т без необходимо что-то обновить – GuidoG
Есть ли какая-то конкретная причина, почему вы не создаете представление, основанное на ваших таблицах? – Tyron78
Довольно уверен, что вы выполняете то, что вам нужно, с помощью [функций окна] (https://msdn.microsoft.com/en-us/library/ms189461.aspx), например. 'Percentage = 1.0/COUNT (*) OVER (PARTITION by Company, Date)' – GarethD