SSAS命名计算引用了另一个表

时间:2019-05-30 23:16:19

标签: ssas calculation named

我正在SSAS VS工具中进行多维分析。我有两个表,动物animal_intake。用animal_id标识动物,使用animal_id标识animal_intake参考动物。我想要完成的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_idANIMAL表的主键,并且birth_date字段具有NOT NULL约束。因此,对于给定的naimal_id,查询必须有一个准确的结果。

这是我数据库中的简化表。

动物

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]),
);

1 个答案:

答案 0 :(得分:0)

尝试以下操作:

(SELECT [ANIMAL].[birth_date] FROM [ANIMAL] WHERE [ANIMAL].[animal_id] = [ANIMAL_INTAKE].[animal_id])

我假设您在DSV中的表名为ANIMAL_INTAKE,这就是您要进行命名计算的表。