使用SQL Server和SQL Server Management Studio v17.5。
我正在尝试使用所选表中的值来运行计算。例如下面。我希望“开始”值为当前行的“最终库存编号”减去“库存总数”。因此,对于每一行,将对该表的该行中包含的特定值感到满意。有没有一种方法可以通过设置变量来实现?
USE [Fishery_Tanks_Ponds]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_Report_WhiteSturgeon]
AS
DECLARE @Start_Inv NVARCHAR(50)
SET @Start_Inv = Final_Inventory_# - Stocking_Total_#
SELECT
@Start_Inv AS [Start Inventory],
Stocking_Total_#, Final_Inventory_#
FROM
aa_Tanks_Ponds
最终结果应类似于:
Start Inventory | Stocking_Total_# | Final_Inventory_#
300 | 500 | 800
400 | 250 | 650
800 | 350 | 1150
答案 0 :(得分:1)
不确定要使用该变量做什么,但是不能像这样在查询中简单地执行计算
select [Final_Inventory_#] - [Stocking_Total_#] as [Start Inventory],
Stocking_Total_#,
Final_Inventory_#
from aa_Tanks_Ponds
如果您的计算过于复杂,则可以考虑使用CROSS APPLY并在内部执行计算
select [Start Inventory],
Stocking_Total_#,
Final_Inventory_#
from aa_Tanks_Ponds
cross apply
(
select [Final_Inventory_#] - [Stocking_Total_#] as [Start Inventory]
) si
OR
假设计算不太复杂或不依赖于其他外部表,您也可以在表的创建中使用计算列进行计算。