命名计算子查询问题

时间:2014-06-06 18:42:59

标签: sql sql-server-2012 ssas

我正面临SSAS的一个小问题,我正在尝试从维度表中添加一个列到我的事实表«Fact_Ventes»。

这是我的疑问:

Select dc.[CuNumber]
from [Warehouse].[dbo].[Dim_Clients] dc
inner join [Warehouse].[dbo].[FACT_Ventes] fv  on fv.SK_Clients = dc.SK_Clients

这是我得到的错误:

  

子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。

任何人都可以帮我吗?

3 个答案:

答案 0 :(得分:1)

我在这里找到了解决方案:http://msdn.microsoft.com/en-us/library/ms174859.aspx我想分享它,似乎我的查询需要在括号之间,我将内部联接更改为where子句,它的工作正常:

(SELECT Dim_Clients.CuNumber 来自Dim_Clients                   其中Dim_Clients.SK_Clients = FACT_Ventes.SK_Clients)

答案 1 :(得分:0)

命名计算的表达式应返回标量值。你的会返回一个结果集。

我会放弃使用命名计算和命名查询,并通过SQL视图访问所有数据。

答案 2 :(得分:0)

如果我理解正确,您只是尝试使用另一个表中的值更新Fact_Ventes表。一个简单的UPDATE FROM应该可以做到这一点:

UPDATE [Warehouse].[dbo].[FACT_Ventes]
   SET fv.CuNumber = dc.[CuNumber]
  FROM [Warehouse].[dbo].[FACT_Ventes] fv
INNER JOIN [Warehouse].[dbo].[Dim_Clients] dc ON fv.SK_Clients = dc.SK_Clients

这假设您已经更新了Fact_Ventes架构以包含新列。