【问题标题】:SQL Assign variable to function result within SELECT StatementSQL 将变量分配给 SELECT 语句中的函数结果
【发布时间】:2017-10-11 00:53:29
【问题描述】:

我有一个 SELECT 语句多次使用函数的结果。有没有一种方法可以给它分配一个变量,而不是重复地敲击函数,以使语句更有效率,而我不必一直敲击函数?

过度简化的假设示例代码:

DECLARE @Total Decimal(18,2)

SELECT t.ClientName AS Customer, t.ClientID,
--This function returns total sales for the Client
@Total = dbo.functionSalesTotal(t.ClientID), 
@Total AS Sales, (@Total * 0.13) AS Tax, 
(@Total + (@Total *0.13)) AS TotalIncludingTax
FROM table t

【问题讨论】:

    标签: sql sql-server tsql select


    【解决方案1】:

    子查询或apply 是最好的方法:

    SELECT t.ClientName AS Customer, t.ClientID, 
           v.total AS Sales, (v.Total * 0.13) AS Tax, 
           (v.Total + (v.Total *0.13)) AS TotalIncludingTax
    FROM table t CROSS APPLY
         (VALUES (dbo.functionSalesTotal(t.ClientID)) as v(total);
    

    【讨论】:

    • 函数可能是确定性的
    猜你喜欢
    • 2015-02-21
    • 2017-03-09
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 2011-10-22
    • 2010-10-02
    相关资源
    最近更新 更多