首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多部分标识符无法绑定sql server。

多部分标识符无法绑定sql server。
EN

Stack Overflow用户
提问于 2022-11-18 18:14:20
回答 1查看 33关注 0票数 -1

我在执行“多部分标识符”"od.Ordernumber“不能是”多部分标识符“"od.Location_code”时出现了该错误。

代码语言:javascript
复制
create function Mbse.udf_ordertotal
(@Numberoforder int , @loction_code int )
returns int 
as
begin

declare @amount as int 

set @amount=(select  sum(od.amount) from Mbse.OrderDetails as od 
where (@Numberoforder=od.Ordernumber and @loction_code=od.Location_code) 
)
return @amount
end

alter table Mbse.orders
add amount as Mbse.udf_ordertotal(Mbse.OrderDetails.Ordernumber , Mbse.OrderDetails.location_code)

我希望这个问题能得到解决

EN

回答 1

Stack Overflow用户

发布于 2022-11-19 02:32:07

正如Jeff在评论中所说的那样,使用用户定义的函数来聚合Mbse.OrderDetails表的计算列由于多种原因而不是一个好主意。它将很重,将处理RBAR (按痛苦的行排列),即每一行一次,并将防止并行用于直接或间接引用该函数或Mbse.orders表的任何查询。

最好对OrderDetails表进行适当的索引,并在视图中将其连接到Orders表,如下所示:

代码语言:javascript
复制
-- Columnstore indexes are typically very quick for aggregative queries
CREATE NONCLUSTERED COLUMNSTORE INDEX IX_OrderDetails_Amount ON Mbse.OrderDetails (Ordernumber, Location_code, amount);

CREATE VIEW Mbse.OrdersWithTotals 
AS

WITH _OrderDetailsTotals AS
(
    SELECT
        Ordernumber, 
        Location_code, 
        SUM(amount) AS TotalAmount
    FROM Msbe.OrderDetails
    GROUP BY 
        Ordernumber, 
        Location_code
)

SELECT
    O.Ordernumber,
    O.location_code,
    ODT.TotalAmount
FROM Mbse.orders AS O
LEFT JOIN _OrderDetailsTotals AS ODT
    ON O.Ordernumber = ODT.Ordernumber
    AND O.location_code = ODT.Location_code;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74493821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档