Я делаю многомерный анализ в инструменте SSAS VS.У меня есть две таблицы, animal animal_intake.Животное идентифицируется как animal_id
, а animal_intake ссылается на животное, используя animal_id
.Для этого я хочу добавить id для создания именованного расчета с учетом того, что будет иметь информацию о возрасте животного на день приема.Чтобы рассчитать возраст, я должен указать дату рождения животного в animal_intake под названием калькуляция.На основе решения, описанного в документации [https://docs.microsoft.com/en-us/sql/analysis-services/multidimensional-models/define-named-calculations-in-a-data-source-view-analysis-services?view=sql-server-2017#creating-named-calculations], я создал следующий запрос для именованного расчета
(SELECT [ANIMAL].[birth_date] FROM [ANIMAL] WHERE [ANIMAL].[animal_id] =[animal_id])
только для того, чтобы получить доступ к дате рождения животного.К сожалению, когда я нажимаю «исследовать данные», VS отображает следующую ошибку
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
#
Я не понимаю, в чем проблема - animal_id
является первичным ключом таблицы ANIMAL
, а поле birth_date
имеетNOT NULL
ограничение.Поэтому для данного naimal_id
должен быть ровно один результат для запроса.
Вот упрощенные таблицы из моей базы данных.
ANIMAL
CREATE TABLE [ANIMAL] (
[animal_id] CHAR(7) PRIMARY KEY,
[birth_date] DATE REFERENCES [DATE]([exact_date]) NOT NULL
);
ANIMAL_INTAKE
CREATE TABLE [ANIMAL_INTAKE] (
[animal_id] CHAR(7) NOT NULL REFERENCES [ANIMAL],
[stay_number] TINYINT NOT NULL,
[intake_date] DATE REFERENCES [DATE]([exact_date]) NOT NULL,
PRIMARY KEY ([animal_id], [stay_number]),
);