【问题标题】:MSSQL use result from case statement [duplicate]案例语句的MSSQL使用结果[重复]
【发布时间】:2021-07-23 08:33:21
【问题描述】:
SELECT .....
    'NewReserveSum' = 
case 
    when h.ApprovedCurrencyID = 417 then new.ReserveSumV 
    else [dbo].[GetCurrencyRate](h.ApprovedCurrencyID, @PresentDate) * new.ReserveSumV 
end,
    (o.ReserveSummN - NewReserveSum) as 'DifferenceReserveSummN'
    
FROM ......

我想在以下列中使用 ** NewReserveSum ** 变量,但出现错误:

列名“NewReserveSum”无效

如何在 MSSQL 中正确执行?

【问题讨论】:

    标签: sql sql-server sql-server-2016


    【解决方案1】:

    在 SQL 中,= 是比较,而不是赋值

    在 SELECT 语句中,您可以使用 AS 在表达式列顶部指定名称:

    SELECT
    case 
        when h.ApprovedCurrencyID = 417 then new.ReserveSumV 
        else [dbo].[GetCurrencyRate](h.ApprovedCurrencyID, @PresentDate) * new.ReserveSumV 
    end as NewReserveSum,
    ...
    

    【讨论】:

    • 情况当 h.ApprovedCurrencyID = 417 然后 new.ReserveSumV else [dbo].[GetCurrencyRate](h.ApprovedCurrencyID, @PresentDate) * new.ReserveSumV end as NewReserveSum, (o.ReserveSummN - NewReserveSum)作为'DifferenceReserveSummN',我已经这样做了,但得到了同样的错误
    • “在 SQL 中,= 是比较,而不是赋值” 不正确。 {Alias} = {Expression}(别名)是有效的语法,{Variable} = {Expression}(分配)也是如此。有些人(不是我自己)更喜欢使用 = 而不是 AS 进行别名,例如 Bertrand:Using AS instead of = for column aliases
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2021-03-22
    相关资源
    最近更新 更多