SQL Server 2005 Вычисляет Столбец В результате агрегирования Значения другого поля таблицы

StackOverflow https://stackoverflow.com/questions/166518

Вопрос

Извините за длинное название вопроса.

Думаю, в этом деле я проиграл, но на всякий случай.

Возможно ли сделать вычисление вычисляемого поля в таблице результатом агрегатной функции, примененной к полю в другой таблице.

т. е.

У вас есть таблица под названием "кружка", у нее есть дочерний элемент под названием "цвет" (от которого у меня начинает болеть голова в Великобритании, но поставщик из США, что вы собираетесь делать?), а у этого, в свою очередь, есть дочерний элемент под названием "размер".В каждой таблице есть поле под названием продано.

Размер.продано увеличивается на 1 за каждую проданную кружку определенного цвета и размера.

Вам нужен цвет.продано должно быть суммой SUM size.продано, ГДЕ size.colorid = color.colorid

Вам нужна кружка.продано, чтобы быть совокупным цветом SUM.продано, ГДЕ color.mugid = mug.mugid

Есть ли что-нибудь, чтобы сделать кружку.продано и покрасить.проданные просто разбираются сами по себе, или мне придется возиться с триггерами?

Это было полезно?

Решение

вы не можете заставить вычисляемый столбец напрямую ссылаться на другую таблицу, но вы можете заставить его ссылаться на пользовательскую функцию.вот ссылка на пример реализации подобного решения.

http://www.sqlservercentral.com/articles/User-Defined+functions/complexcomputedcolumns/2397/

Другие советы

Нет, это невозможно сделать.Вычисляемый столбец может быть получен только из значений других полей в той же строке.Чтобы вычислить агрегат по другой таблице, вам нужно создать представление.

Если вашему приложению необходимо показать статистику, задайте следующие вопросы:

  1. Действительно ли необходимо показывать это в режиме реального времени?Если да, то почему?Если это действительно необходимо сделать, то вам придется использовать триггеры для обновления таблицы. Это ссылки на короткую статью в Википедии о денормализации.Триггеры влияют на производительность записи при обновлении таблицы и зависят от того, активны ли триггеры.
  2. Если это необходимо только для целей составления отчетов, вы могли бы выполнить вычисление в представлении или отчете.
  3. Если необходимо поддерживать частые нерегламентированные отчеты, вы можете оказаться в сфере витрины данных и быстрого процесса ETL.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top