You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将SQL查询结果行分别赋值给@stockQty与@badStockQty标量变量?

当然可行!这在SQL里完全能实现

我给你两种实用的实现思路,你可以根据自己的查询结构来选:

方法一:借助临时表/表变量按行号赋值

如果你的原始查询是返回两行结果(第一行是正常库存总值,第二行是不良库存总值),可以先把结果存入带自增行号的临时表,再按行号给变量赋值:

-- 声明表变量存储查询结果,带自增行号
DECLARE @tempStock TABLE (RowNum INT IDENTITY(1,1), Qty DECIMAL(18,2))

-- 把你的查询结果插入到表变量里(替换成你实际的查询语句)
INSERT INTO @tempStock (Qty)
SELECT SUM(stock_value) 
FROM inventory 
WHERE status = 'N'
UNION ALL
SELECT SUM(bad_stock_value) 
FROM inventory 
WHERE status = 'Y'

-- 按行号给标量变量赋值
SELECT @stockQty = Qty FROM @tempStock WHERE RowNum = 1
SELECT @badStockQty = Qty FROM @tempStock WHERE RowNum = 2

注意:如果你的原始查询没有固定行顺序,记得加上ORDER BY来确保第一行是正常库存、第二行是不良库存,避免赋值出错。

方法二:直接在SELECT语句中同时赋值

如果可以调整查询结构,让两个值作为同一行的两列返回,就能一步完成赋值,效率更高:

-- 直接通过子查询分别获取两个值并赋值
SELECT
    @stockQty = (
        SELECT SUM(s.sales_value + sr.return_value) 
        FROM sales s
        JOIN sales_return sr ON s.order_id = sr.order_id
        WHERE s.status = 'N' AND sr.status = 'N'
    ),
    @badStockQty = (
        SELECT SUM(bad_stock_value) 
        FROM inventory 
        WHERE status = 'Y'
    )

这种方法不需要临时表,逻辑更简洁,只要子查询能正确返回单个值就行。

总之,只要你的查询能稳定获取到对应的两个数值,就能顺利把它们赋值给@stockQty和@badStockQty,完全满足后续计算的需求~

内容的提问来源于stack exchange,提问作者Walif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:50:11