【问题标题】:Named calculation subquery issue命名计算子查询问题
【发布时间】:2014-06-06 18:42:58
【问题描述】:

我在使用 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 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。

谁能帮我解决这个问题?

【问题讨论】:

  • 如果列在维度表上,为什么需要将其作为计算添加到事实表中?,这真的没有多大意义
  • 我需要此列在我的事实表上按 CuNumber 进行计数不同的度量
  • 我有一种预感,这不是完整的代码。如果没有,请粘贴完整的 sql 查询。

标签: sql sql-server-2012 ssas


【解决方案1】:

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

(SELECT Dim_Clients.CuNumber FROM Dim_Clients 其中 Dim_Clients.SK_Clients = FACT_Ventes.SK_Clients)

【讨论】:

【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    如果我理解正确,您只是想用另一个表中的值更新您的 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 架构以包含新列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 2012-08-31
      相关资源
      最近更新 更多